Создадим программу, определяющую, является ли введенное слово перевертышем. Перевертышем называется слово, которое одинаково читается как слева направо, так и справа налево, например: шалаш, казак. Как видно из определения, для выяснения, является ли слово перевертышем, необходимо сравнивать 1-й и последний символ в строке, 2-й и предпоследний, 3-й и предпредпоследний символ, и т. д. до середины слова. Если в процессе сравнения будет установлено отличие сравниваемых символов, т. е. выясняется, что слово читается слева направо иначе, чем справа налево, значит можно сделать вывод, что это слово не является перевертышем. Если в процессе сравнения не будет выявлено отличия сравниваемых символов, значит это слово – перевертыш.
Введем следующие переменные: для хранения слов – Word типа string с максимальным размером слов 30 символов и переменную I целого типа, указывающую номер позиции сравниваемого символа от начала строки. Заголовок программы можно будет записать следующим образом:
program Perev_Word:
var I : byte:
Word : string[30];
Прежде всего, программа должна выводить сообщение о вводе строки и считывать значение строки в переменную Word. Это можно записать следующим образом:
Write(‘Введите слово ‘);
Readln(Word):
Повторяющуюся операцию сравнения первого и последнего символа в строке, затем второго и предпоследнего и т. д., запишем с помощью цикла for, параметр которого, изменяясь от 1 до середины строки, будет указывать номер позиции символа от начала строки. Конечное значение параметра цикла установим равным середине слова, целочисленное значение которого вычислим, используя стандартные функции Trunc и Length. Заголовок оператора цикла запишем следующим образом:
for I:=l to Trunc(Length(Word)/2) do
В теле цикла запишем оператор сравнения соответствующих символов:
if Word[I]<>Word[Length(Word)-I+l].
Если результат сравнения соответствующих очередных символов примет значение True, то данная строка не является перевертышем, и дальнейшее сравнение не имеет смысла. Выведем на экран сообщение, что данное слово не является перевертышем, и завершим цикл процедурой exit, которая передает управление в конец программы.
Если результат сравнения соответствующих очередных символов имеет значение False, то это свидетельствует о том, что данные символы одинаковы, но следует продолжить сравнение оставшихся. Параметр цикла увеличивается на 1, проверяется условие I <=Trunc(Length(Word)/2) и если оно соблюдается, то тело цикла выполняется еще раз.
Если условие I <=Trunc(Length(Word)/2) не выполняется, то цикл завершается, и управление передается на оператор Writeln(‘Перевертыш’). Программа завершает работу. Полный текст программы можно представить таким образом:
program Perev_Word; {Является ли введенное слово перевертышем?}
var I : byte;
Word : string[30];
begin
Write(‘Введите слово ‘);
Readln(Word);
for I:=l to Trunc(Length(Word)/2) do {Проверяем символы поочередно от начала до середины слова}
begin
if Word[I]<>Word[Length(Word)-I+l] then {Если соответствующие символы не одинаковы} begin Writeln С Неперевертыш’);
exit {Выход из цикла и завершение программы, дальше не имеет смысла сравнивать }
end;
end;
Writeln (‘Перевертыш’);
end.
Запустите интегрированную среду программирования. Введите текст программы Perev_Word и запишите файл на диск под соответствующим именем, а затем откомпилируйте его. После успешного завершения компиляции проверьте работу программы с отладкой в пошаговом режиме, отслеживая значения переменных Word, I, Word[I], Word[length(Word)-I+l].