Дан массив 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;
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д