Паскаль. Основы программирования


Глава Цикл с последующим условием Оператор repeatuntil - часть 2


Еще один пример, который демонстрирует работу цикла с постусловием.

Пример 2. Числа, одинаково читающиеся и слева направо, и справа налево, называются палиндромами. Например, числа 42324 или 1331 - палиндромы. Составьте программу, которая будет находить числа - палиндромы из заданного промежутка.

Логика составления программы такова.

Переставить цифры в числе и сравнить полученное число с заданным.

Раньше уже составлялась программа перестановки цифр числа, которая была выполнена с помощью цикла с предусловием

while ... do

...

Как будет построена часть программы о перестановки цифр с помощью цикла

repeat ... until ...

Пусть заданное число a, тогда введем еще одну переменную b, которой будет присвоено значение переменной a (для чего это делается вы узнаете позже): b := a;

Заведем еще одну переменную a1 для нового числа, в котором цифры уже будут переставлены.

Первоначальное значение этой переменной - ноль: a1 := 0;

Почему значение этой переменной равно нулю станет ясно из программы.

Далее организуем цикл repeat, в котором будет происходить перестановка цифр числа b:

                                            repeat

a1 := a1*10 + b mod 10;

                                                           b  := b div 10

                                            until b = 0;

 

Итак, в цикле, также как и в цикле while ... do ..., отделяется последняя цифра:

b mod

10; (например, 343 mod 10 = 3); переменной a1 присваивается значение:

a1 := a1*10 + b mod

10; 0 * 10 + 3 =3;

"отбрасывается" последняя цифра заданного числа с помощью операции целочисленного деления:

b := b div 10; 343 div 10 = 34;

проверяется условие: b = 0, 34 = 0, условие не выполняется, значит цикл продолжается.

Отделяется последняя цифра уже нового числа:

b mod 10 = 34 mod 10;

новое число a1, уже равное 3, умножается на 10 и к результату прибавляется следующая цифра - 4:

a1 := a1*10 + b mod

10;

"отбрасывается" последняя цифра числа b:

b := b div 10 ; 34 div 10 = 3;




Начало  Назад  Вперед



Книжный магазин