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