Дан массив 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.

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

  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
Похожие ответы