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


Оператор цикла fordowntodo - часть 4


Пример 4. Из математики известно, что всякая натуральная степень числа n есть сумма n последовательных нечетных натуральных чисел. Составьте программу, которая для любой степени натурального числа n находила бы последовательность нечетных чисел, сумме которых равна эта степень.

Например, для 53 она выдавала бы последовательность чисел: 21, 23, 25, 27, 29.

План составления программы

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

А если это так, тогда нам совершенно необходимо знать значение степени числа n с показателем k.

Это можно сделать с помощью простого цикла:

s := 1;

for i := 1 to k do s := s*n;

Значение степени будут накапливаться в переменной s, для этого ей устанавливается первоначальное значение 1.

В цикле, значение переменной s последовательно, k раз умножается на основание степени n. После выполнения цикла переменная s получит значение степени числа n с показателем k.

2. Вся острота вопроса состоит в том, что неизвестно первое нечетное число, от которого надо начинать суммирование последовательных нечетных чисел.

Для этого надо пробовать складывать нечетные числа вначале от 1 и далее (известно их количество - n);

1 + 3 + 5 + 7 + 9 ...,

а затем проверять полученный результат, сравнивая со значением степени s. Если равенство выполняется, тогда закончить цикл и вывести на экран полученные нечетные числа, если равенство не выполняется, тогда надо начинать суммирование со следующего нечетного числа - 3: 3 + 5 + 7 + 9 ... и т.д.

Этот процесс легче организовать с помощью цикла repeat. Переменной j, которая будет задавать начальные нечетные числа надо установить перед началом цикла первоначальное значение 1.

Общий вид такого цикла:

j := 1;

repeat

      . . . . . .

      j := j + 2

until  ...= s;

 

3. Осталось продумать, как подсчитывать суммы последовательных нечетных чисел. Мы уже сталкивались с этим вопросом и знаем, что для этого надо создать цикл от 1 до n, в котором в одну из переменных, скажем m, накапливать эту сумму, а вторая переменная должна "вырабатывать" следующее нечетное число.




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



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