Определить, можно ли переставить буквы так, чтобы получился палиндром - Free Pascal

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

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

3.На вход программы подаются прописные латинские буквы, ввод этих символов заканчивается точкой. Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет определять, можно ли переставить эти буквы так, чтобы получился палиндром (палиндром читается одинаково слева направо и справа налево). Программа должна вывести ответ «Да» или «Нет», а в случае ответа «Да» – еще и сам полученный палиндром (первый в алфавитном порядке). Пример входной строки: GAANN. Пример выходных данных: Да ANGNA

Решение задачи: «Определить, можно ли переставить буквы так, чтобы получился палиндром»

textual
Листинг программы
  1. var
  2.   s: String;
  3.   c, k: Char;
  4.   i, n: Integer;
  5.   a: array ['A'..'Z'] of Integer;
  6. begin
  7.   Write('Введите строку: '); ReadLn(s);
  8.   for i:=1 to Length(s) do if s[i] in ['A'..'Z'] then Inc(a[s[i]]);
  9.   for c:='A' to 'Z' do
  10.     if odd(a[c]) then begin
  11.       Inc(n); k:=c;
  12.     end;
  13.   if n>1 then WriteLn('Нет')
  14.   else begin
  15.     WriteLn('Да');
  16.     for c:='A' to 'Z' do for i:=1 to a[c] div 2 do Write(c);
  17.     if k<>#0 then Write(k);
  18.     for c:='Z' downto 'A' do for i:=1 to a[c] div 2 do Write(c); WriteLn;
  19.   end;
  20. end.

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

  1. Вводится строка с помощью функции ReadLn().
  2. Происходит итерация по каждому символу в строке.
  3. Если символ является буквой от 'A' до 'Z', то увеличивается соответствующий элемент массива a.
  4. Происходит итерация по каждой букве от 'A' до 'Z'.
  5. Если количество нечетных элементов в массиве a больше 1, то выводится сообщение Нет.
  6. Если количество нечетных элементов в массиве a равно 1, то выводится сообщение Да.
  7. Происходит итерация по каждой букве от 'A' до 'Z'.
  8. Для каждой буквы выводится палиндром (если он есть) из символов, которые были увеличены в массиве a.
  9. Если k не равно последнему символу, то выводится k.
  10. Происходит итерация по каждой букве от 'Z' до 'A' в обратном порядке.
  11. Для каждой буквы выводится палиндром (если он есть) из символов, которые были увеличены в массиве a.
  12. Выводится символ новой строки.

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


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

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

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

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

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

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