Определить является ли слово перевертышем - 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 удаляется.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д