Определить является ли слово перевертышем - 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.
Объяснение кода листинга программы
- Объявление константы ANSWER, которая является массивом строк, содержащими значения
Is not palindrome
иIs palindrome
. - Объявление функции IsPalindrom, которая принимает строку в качестве параметра и возвращает логическое значение. Внутри функции создаются переменные Res (логическое значение) и i (байт).
- В основной программе происходит ввод строки с клавиатуры и сохранение ее в переменную s.
- Затем к строке s добавляется пробел.
- Выполняется цикл, который будет продолжаться, пока длина строки s больше нуля.
- Внутри цикла создается переменная si (строка), которая инициализируется пустой строкой.
- Затем во внутреннем цикле происходит итерация по строке s до тех пор, пока не будет найден пробел, запятая или точка. Все символы, прочитанные до этого момента, добавляются к переменной si, и удаляются из строки s.
- Если длина переменной si не равна нулю, то выводится содержимое переменной si и результат выполнения функции IsPalindrom(si) (либо
Is not palindrome
, либоIs palindrome
). - Затем первый символ строки s удаляется.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д