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


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


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

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

b mod 10 ; 3 mod

10 = 3;

формируется новое число:

a1 := a1*10 + b mod 10 ;  34 * 10 + 3 = 343;

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

b := b div 10 ;  3 div 10 = 0;

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

Теперь становится ясно, почему введена другая переменная b для заданного числа, ее значение в цикле меняется от начального до нуля и, чтобы сохранить заданное число в переменной a, и вводится, так сказать, "рабочая" переменная - b.

После окончания цикла перестановки цифр числа, сравнивается первоначальное число, которое "сохранилось" в переменной a и число, которое получилось после перестановки цифр и "накопилось" в переменной a1.

Если

a = a1, тогда значение a выдается на экран, так как это число является палиндромом.

Далее, значение a увеличивается на 1, т. е. берется для рассмотрения следующее по порядку натуральное число и снова продолжается внешний цикл. Цифры числа переставляются, полученное новое число после перестановки цифр - a1, сравнивается с первоначальным a и так далее.

Внешний цикл заканчивается, когда значение a становится равным правой границе интервала - n.

Составим

программу

 

Program Problem2;

     uses WinCrt;

     var

        m, n, a, b, a1 : longint;

     begin

        write('Введите левую границу промежутка '); readln(m);

        write('Введите правую границу промежутка '); readln(n);

        a := m;

        writeln('Числа палиндромы из [', m, ';', n, ']');

           repeat

              b := a; a1 := 0;

                 repeat

                    a1 := a1*10 + b mod 10;

                    b  := b div 10

                 until b=0;

              if a1 = a then write(a, ' ');

              a := a + 1

           until a > n;

     end.

 

Программы, составленные с циклом с предусловием (while ... do...), легко можно переделать с циклом с постусловием (repeat ... until ...) и они будут такими:




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



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