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

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

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

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

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

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

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

Итак, у меня есть код программы которая просто решает является выражение таковым или нет:
 program Arozaupalanalapuazora;

var s:string [40];
    i:integer;
begin
writeln ('vvedite virajeniye:');
readln (s);
while pos(' ',s)>0 do delete (s,pos(' ',s),1);
i:=length(s) div 2;
while (i>0) and (s[i]=s[length (s)-i+1]) do dec(i);
if i=0 then writeln ('yavlyaetsta perevertishem') else writeln ('ne yavlyaetsa perevertishem');
readln
end.
Заранее благодарю

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

textual
Листинг программы
const
  ANSWER: Array[Boolean] Of String[17] = ('Is not palindrome', 'Is palindrome');
 
function IsPalindrom(const s: String): Boolean;
var
  Res: Boolean;
  i: Byte;
begin
  i := 1;
  repeat
    Res := (s[i] = s[Length(s) + 1 - i]);
    Inc(i);
  until ((i >= Length(s) div 2) Or not Res);
  IsPalindrom := Res;
end;
 
var
  s, si: String;
 
begin
  Write('Input string: ');ReadLn(s);
  s := s + ' ';
  while (Length(s) > 0) do
  begin
    si := '';
    while not ((s[1] = ' ') or ((s[1] = ',')) or (s[1] = '.') ) do
    begin
      si := si + s[1];
      Delete(s, 1, 1);
    end;
    if (Length(si) <> 0)
        then
      WriteLn(si, ' - ', ANSWER[IsPalindrom(si)]);
    Delete(s, 1, 1);
  end;
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
Похожие ответы