Определить, можно ли переставить буквы так, чтобы получился палиндром - Free Pascal
Формулировка задачи:
3.На вход программы подаются прописные латинские буквы, ввод этих символов заканчивается точкой. Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет определять, можно ли переставить эти буквы так, чтобы получился палиндром (палиндром читается одинаково слева направо и справа налево). Программа должна вывести ответ «Да» или «Нет», а в случае ответа «Да» – еще и сам полученный палиндром (первый в алфавитном порядке).
Пример входной строки:
GAANN.
Пример выходных данных:
Да
ANGNA
Решение задачи: «Определить, можно ли переставить буквы так, чтобы получился палиндром»
textual
Листинг программы
- var
- s: String;
- c, k: Char;
- i, n: Integer;
- a: array ['A'..'Z'] of Integer;
- begin
- Write('Введите строку: '); ReadLn(s);
- for i:=1 to Length(s) do if s[i] in ['A'..'Z'] then Inc(a[s[i]]);
- for c:='A' to 'Z' do
- if odd(a[c]) then begin
- Inc(n); k:=c;
- end;
- if n>1 then WriteLn('Нет')
- else begin
- WriteLn('Да');
- for c:='A' to 'Z' do for i:=1 to a[c] div 2 do Write(c);
- if k<>#0 then Write(k);
- for c:='Z' downto 'A' do for i:=1 to a[c] div 2 do Write(c); WriteLn;
- end;
- end.
Объяснение кода листинга программы
- Вводится строка с помощью функции ReadLn().
- Происходит итерация по каждому символу в строке.
- Если символ является буквой от 'A' до 'Z', то увеличивается соответствующий элемент массива a.
- Происходит итерация по каждой букве от 'A' до 'Z'.
- Если количество нечетных элементов в массиве a больше 1, то выводится сообщение
Нет
. - Если количество нечетных элементов в массиве a равно 1, то выводится сообщение
Да
. - Происходит итерация по каждой букве от 'A' до 'Z'.
- Для каждой буквы выводится палиндром (если он есть) из символов, которые были увеличены в массиве a.
- Если k не равно последнему символу, то выводится k.
- Происходит итерация по каждой букве от 'Z' до 'A' в обратном порядке.
- Для каждой буквы выводится палиндром (если он есть) из символов, которые были увеличены в массиве a.
- Выводится символ новой строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д