Проверять, является ли строка палиндромом - Free Pascal
Формулировка задачи:
Помогите. Как написать решение к этой сверхсложной задаче.
Дана последовательность символов s1, s2, ..., sn, 1 <= n <= 200, si либо является пробелом, либо принадлежит множеству {A,B,...,Z,a,b,...,z}. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Палиндромом назовем такое слово s1, s2, ..., sk, что s1 = sk, s2 = sk-1, s3 = sk-2, ..., k <= 30, при этом учитывается регистр символов, т.е. A <> Проверять, является ли строка палиндромом?
(ПАЛИНДРОМЫ (перевертыши) - слова или группа символов, читающиеся одинаково в обоих направлениях. )
Решение задачи: «Проверять, является ли строка палиндромом»
textual
Листинг программы
var s: String; i, j: Integer; begin Write('Фраза: '); ReadLn(s); i:=1; j:=Length(s); while (i<j) and (s[i]=s[j]) do begin repeat Inc(i); until (i>=j) or (s[i]<>' '); repeat Dec(j); until (j<1) or (s[j]<>' '); end; WriteLn(i>=j); end.
Объяснение кода листинга программы
- Объявлены две переменные: строка s и два целочисленных параметра i и j.
- Пользователю предлагается ввести строку.
- Значения i и j инициализируются. i устанавливается равным 1, а j — длине строки s.
- Запускается цикл while, который будет выполняться до тех пор, пока i меньше j и символы в s[i] и s[j] равны.
- Внутри цикла i увеличивается на единицу до тех пор, пока i не станет равным или больше j или пока символ в s[i] не будет отличаться от пробела.
- Если цикл завершился, то j уменьшается на единицу до тех пор, пока j не станет меньше 1 или пока символ в s[j] не будет отличаться от пробела.
- Цикл while завершается, и выводится сообщение, указывающее, является ли строка палиндромом (i.e. равно ли значение i значению j).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д