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