Дан массив x, состоящий из латинских букв - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Вот задача: Дан массив x, состоящий из латинских букв. Вывести его так, чтобы элементы следовали в алфавитном порядке в массиве a, а в массиве b - все повторяющиеся элементы. Не понимаю, как мне объявлять массивы в Паскале, если я не знаю их длинны. Буду очень признателен, если кто-нибудь объяснит или сделает программу. Заранее спасибо.

Решение задачи: «Дан массив x, состоящий из латинских букв»

textual
Листинг программы
  1. var
  2.     x, b: Array[Byte] Of Char;
  3.     i, nx, nb: Byte;
  4.     c: Char;
  5.     a: Array['a'..'z'] Of Boolean;
  6. begin
  7.     Randomize;
  8.     for c := 'a' to 'z' do
  9.         a[c] := False;
  10.     repeat
  11.         Write('Input x length (>0): '); ReadLn(nx);
  12.     until (nx > 0);
  13.     nb := 0;
  14.     {так как массив X дан, то запишем его в память}
  15.     Write('X:');
  16.     for i := 0 to nx - 1 do
  17.     begin
  18.         x[i] := Chr(Random(26) + 97);
  19.         Write(x[i]:2);
  20.         if (a[x[i]])
  21.         then
  22.         begin
  23.             b[nb] := x[i];
  24.             Inc(nb);
  25.         end
  26.         else
  27.             a[x[i]] := True;
  28.     end;
  29.     WriteLn; Write('A:');
  30.     for c := 'a' to 'z' do
  31.         if (a[c])
  32.         then
  33.             Write(c:2);
  34.     WriteLn; Write('B:');
  35.     if (nb > 0)
  36.     then
  37.         for i := 0 to nb - 1 do
  38.             Write(b[i]:2)
  39.     else
  40.         Write(' EMPTY!');
  41.     WriteLn;
  42. end.

Объяснение кода листинга программы

  1. Создаются переменные x, b и a типа Array[Byte] Of Char, Byte и Array['a'..'z'] Of Boolean соответственно.
  2. В цикле for записываются в массив a все буквы от 'a' до 'z' с помощью строки a[c] := False;.
  3. Запускается цикл repeat, который продолжается до тех пор, пока длина массива x больше 0.
  4. Переменная nb инициализируется значением 0.
  5. Выводится сообщение X:, после чего начинается цикл for, который повторяется nx раз.
  6. Внутри цикла for записывается в массив x случайная буква от 'a' до 'z' с помощью строки x[i] := Chr(Random(26) + 97); и выводится ее код с помощью Write(x[i]:2).
  7. Проверяется условие if (a[x[i]]), если оно истинно, то записывается в массив b соответствующий символ с помощью b[nb] := x[i]; и увеличивается значение переменной nb на 1 с помощью Inc(nb);.
  8. Если условие if (a[x[i]]) ложно, то записывается в массив a символ, соответствующий букве x[i] с помощью a[x[i]] := True;.
  9. После завершения внутреннего цикла for выводится сообщение A:, после чего выводится в консоль все буквы от 'a' до 'z', которые присутствуют в массиве a с помощью строки if (a[c]).
  10. Если в массиве b есть символы, то выводится их код с помощью if (nb > 0) и цикла for, который повторяется nb раз.
  11. Если в массиве b нет символов, то выводится сообщение EMPTY!.
  12. Выводится символ конца строки с помощью WriteLn;.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы