Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика Алгоритмические языки.doc
Скачиваний:
11
Добавлен:
14.02.2015
Размер:
360.45 Кб
Скачать

Составим программу

Program Problem2;

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.

Пример 12. Если мы сложим все цифры какого-либо числа, затем - все цифры найденной суммы и будем повторять это много раз, мы наконец получим однозначное число (цифру), называемое цифровым корнем данного числа. Например, цифровой корень числа 561 равен 3 (5 + 6 + 1 = 12; 1 + 2 = 3).

Составьте программу для нахождения числового корня числа.

Ясно, что в программе должен быть цикл, который определяет сумму цифр числа. В свою очередь, этот цикл должен также выполняться до тех пор, пока значение суммы цифр не станет равным одной цифре, т.е. станет меньше 10, но остается больше 0. Для этого надо организовать еще один цикл, который будет являться внешним по отношению к циклу, подсчитывающему сумму цифр.

Одна тонкая особенность! Каждый раз после выполнения внутреннего цикла подсчета суммы цифр, значение этой суммы надо присваивать переменной, в которой содержится первоначальное число, т. е. заменять число на его сумму, проверять условие (не является ли сумма меньше десяти) и продолжать цикл уже с новым числом - суммой, если условие не выполняется. А ту переменную, в которой накапливалась сумма надо каждый раз не забывать обнулять.

Итак, если введенное число было присвоено переменной n, а сумма его цифр переменной s, то после подсчета суммы цифр, переменная должна получить значение s (n:= s), проверить условие (n < 10), если оно еще не выполняется, тогда обнулить переменную s (s:= 0) и продолжить цикл подсчета суммы цифр.

Внешний цикл по проверке значения суммы организуем с помощью операторов repeat ... until n < 10, а внутренний по подсчету суммы цифр с помощью операторов while ... do.

Программа

Program Problem3; { Цифровой корень числа }

var

n, a, s : integer;

begin

write('Введите натуральное число '); readln(n);

a := n;

repeat

s := 0;

while n <> 0 do

begin

s := s + n mod 10; n := n div 10

end;

n := s

until n < 10;

writeln('Цифровой корень числа ', a, ' равен ', n)

end.

Пример 13. Составить программу вычисления факториала числа n, т. е. n!.

Вспомним из математики, что факториал числа n равен произведению чисел от 1 до n.

Например:

Замечание. В математике принято: 0! = 1.

Программа

Program Problem1; { Вычисление факториала числа n! }

var

n, f, i : longint;

begin

write('Введите натуральное число '); readln(n);

f := 1;

if n <> 0 then for i := 1 to n do f := f*i;

writeln('Факториал числа ', n, ' равен ', f)

end.

Пример 14. Квадрат любого натурального числа n равен сумме n первых нечетных чисел:

12 = 1

22 = 1 + 3

32 = 1 + 3 + 5

42 = 1 + 3 + 5 + 7

52 = 1 + 3 + 5 + 7 + 9

. . . . . . . . . . . . . . . . . . .

Основываясь на этом свойстве, составить программу, позволяющую напечатать квадраты натуральных чисел от 1 до n.

Ясно, что цикл в программе надо организовать от 1 до n, в котором выполнять всего три оператора: находить сумму нечетных чисел (а их как раз столько, сколько раз будет выполняться цикл); выдавать полученную сумму на экран; "получать" следующее нечетное число.