Дан массив x, состоящий из латинских букв - Turbo Pascal
Формулировка задачи:
Вот задача: Дан массив x, состоящий из латинских букв. Вывести его так, чтобы элементы следовали в алфавитном порядке в массиве a, а в массиве b - все повторяющиеся элементы.
Не понимаю, как мне объявлять массивы в Паскале, если я не знаю их длинны. Буду очень признателен, если кто-нибудь объяснит или сделает программу. Заранее спасибо.
Решение задачи: «Дан массив x, состоящий из латинских букв»
textual
Листинг программы
var
x, b: Array[Byte] Of Char;
i, nx, nb: Byte;
c: Char;
a: Array['a'..'z'] Of Boolean;
begin
Randomize;
for c := 'a' to 'z' do
a[c] := False;
repeat
Write('Input x length (>0): '); ReadLn(nx);
until (nx > 0);
nb := 0;
{так как массив X дан, то запишем его в память}
Write('X:');
for i := 0 to nx - 1 do
begin
x[i] := Chr(Random(26) + 97);
Write(x[i]:2);
if (a[x[i]])
then
begin
b[nb] := x[i];
Inc(nb);
end
else
a[x[i]] := True;
end;
WriteLn; Write('A:');
for c := 'a' to 'z' do
if (a[c])
then
Write(c:2);
WriteLn; Write('B:');
if (nb > 0)
then
for i := 0 to nb - 1 do
Write(b[i]:2)
else
Write(' EMPTY!');
WriteLn;
end.
Объяснение кода листинга программы
- Создаются переменные
x,bиaтипаArray[Byte] Of Char,ByteиArray['a'..'z'] Of Booleanсоответственно. - В цикле
forзаписываются в массивaвсе буквы от 'a' до 'z' с помощью строкиa[c] := False;. - Запускается цикл
repeat, который продолжается до тех пор, пока длина массиваxбольше 0. - Переменная
nbинициализируется значением 0. - Выводится сообщение
X:, после чего начинается циклfor, который повторяетсяnxраз. - Внутри цикла
forзаписывается в массивxслучайная буква от 'a' до 'z' с помощью строкиx[i] := Chr(Random(26) + 97);и выводится ее код с помощьюWrite(x[i]:2). - Проверяется условие
if (a[x[i]]), если оно истинно, то записывается в массивbсоответствующий символ с помощьюb[nb] := x[i];и увеличивается значение переменнойnbна 1 с помощьюInc(nb);. - Если условие
if (a[x[i]])ложно, то записывается в массивaсимвол, соответствующий буквеx[i]с помощьюa[x[i]] := True;. - После завершения внутреннего цикла
forвыводится сообщениеA:, после чего выводится в консоль все буквы от 'a' до 'z', которые присутствуют в массивеaс помощью строкиif (a[c]). - Если в массиве
bесть символы, то выводится их код с помощьюif (nb > 0)и циклаfor, который повторяетсяnbраз. - Если в массиве
bнет символов, то выводится сообщениеEMPTY!. - Выводится символ конца строки с помощью
WriteLn;.