Определить, можно ли переставить буквы так, чтобы получился палиндром - 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.

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

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