Определить является ли слово перевертышем - Pascal

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

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

Всем доброго времени суток . Прошу, кому не сложно, помочь начинающиму программисту решить задачу.

Условия задачи:

Среди данных N слов найти все "перевертыши" - слова, одинаково читающиеся с обоих сторон.

Реализовать нужно через процедуру, подпрограмма которой будет отвечать на вопрос : "Является ли слово перевертышем"

Итак, у меня есть код программы которая просто решает является выражение таковым или нет:
Листинг программы
  1. program Arozaupalanalapuazora;
  2.  
  3. var s:string [40];
  4. i:integer;
  5. begin
  6. writeln ('vvedite virajeniye:');
  7. readln (s);
  8. while pos(' ',s)>0 do delete (s,pos(' ',s),1);
  9. i:=length(s) div 2;
  10. while (i>0) and (s[i]=s[length (s)-i+1]) do dec(i);
  11. if i=0 then writeln ('yavlyaetsta perevertishem') else writeln ('ne yavlyaetsa perevertishem');
  12. readln
  13. end.
Заранее благодарю

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

textual
Листинг программы
  1. const
  2.   ANSWER: Array[Boolean] Of String[17] = ('Is not palindrome', 'Is palindrome');
  3.  
  4. function IsPalindrom(const s: String): Boolean;
  5. var
  6.   Res: Boolean;
  7.   i: Byte;
  8. begin
  9.   i := 1;
  10.   repeat
  11.     Res := (s[i] = s[Length(s) + 1 - i]);
  12.     Inc(i);
  13.   until ((i >= Length(s) div 2) Or not Res);
  14.   IsPalindrom := Res;
  15. end;
  16.  
  17. var
  18.   s, si: String;
  19.  
  20. begin
  21.   Write('Input string: ');ReadLn(s);
  22.   s := s + ' ';
  23.   while (Length(s) > 0) do
  24.   begin
  25.     si := '';
  26.     while not ((s[1] = ' ') or ((s[1] = ',')) or (s[1] = '.') ) do
  27.     begin
  28.       si := si + s[1];
  29.       Delete(s, 1, 1);
  30.     end;
  31.     if (Length(si) <> 0)
  32.         then
  33.       WriteLn(si, ' - ', ANSWER[IsPalindrom(si)]);
  34.     Delete(s, 1, 1);
  35.   end;
  36. end.

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

  1. Объявление константы ANSWER, которая является массивом строк, содержащими значения Is not palindrome и Is palindrome.
  2. Объявление функции IsPalindrom, которая принимает строку в качестве параметра и возвращает логическое значение. Внутри функции создаются переменные Res (логическое значение) и i (байт).
  3. В основной программе происходит ввод строки с клавиатуры и сохранение ее в переменную s.
  4. Затем к строке s добавляется пробел.
  5. Выполняется цикл, который будет продолжаться, пока длина строки s больше нуля.
  6. Внутри цикла создается переменная si (строка), которая инициализируется пустой строкой.
  7. Затем во внутреннем цикле происходит итерация по строке s до тех пор, пока не будет найден пробел, запятая или точка. Все символы, прочитанные до этого момента, добавляются к переменной si, и удаляются из строки s.
  8. Если длина переменной si не равна нулю, то выводится содержимое переменной si и результат выполнения функции IsPalindrom(si) (либо Is not palindrome, либо Is palindrome).
  9. Затем первый символ строки s удаляется.
  10. Программа завершается.

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


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

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

11   голосов , оценка 3.909 из 5

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

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

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