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


Задание 4 - часть 3


Как устранить эти недостатки?

Первый недостаток устраним, если предварительно выясним, сколько значений для каждого из чисел надо рассматривать, чтобы выполнялось неравенство

Для этого можно организовать цикл с предусловием, цикл "пока", в который включить счетчик - k, который бы подсчитывал, сколько раз такой цикл будет выполняться.

Это можно сделать так:

                                                 k := 0; i := 1;

while i*i*i + 1 <= n do

                                                    begin

                                                        k := k + 1; i := i + 1

                                                    end;

 

Теперь можно значительно уменьшить число циклов для "испытуемых" чисел и организовать их от 1 до k, ибо при значениях i больше k, даже при самом маленьком значении j (j := 2) неравенство i

i
i + 1 <=n не выполняется.

Чтобы устранить второй недостаток, т. е., чтобы не выдавать варианты с перестановкой слагаемых можно поступить так:

внешний цикл по i первого числа устроить от k до 1, а внутренний цикл для второго числа по j делать от 1 до i.

Получится такая часть программы:

p := 0;

for i := k downto 1 do

  for j := 1 to i do if i*i*i + j*j*j = n

                         then

                            begin

                               p := p + 1;

                               writeln(i, '*', i, '*', i, '+', j, '*', j, '*', j, '=', n)

                            end;

Внимательно разберитесь с этой частью программы и подумайте, почему в этом случае мы избегаем повторения вариантов и исключаем случаи перестановки слагаемых?

Осталось красиво

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

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

Если

p = 0, тогда выдать сообщение, что число нельзя представить в виде суммы кубов двух чисел, а иначе, выдать сообщение о количестве способов.




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



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