Упражнение 4

Создадим программу, определяющую, является ли введенное слово перевертышем. Перевертышем называется слово, которое одинаково читается как слева направо, так и справа налево, например: шалаш, казак. Как видно из определения, для выяснения, является ли слово перевертышем, необходимо сравнивать 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].

Добавить комментарий