Причина перевыполнения, исправить repeat - Turbo Pascal
Формулировка задачи:
Решение задачи: «Причина перевыполнения, исправить repeat»
textual
Листинг программы
var
x, y, z, w, n: LongInt;
begin
n := MaxInt;
n := Trunc(Sqrt(n));
n := n - 7;
x := 0;
WriteLn('Все целые решения уравнения x^3 = y^2 + 63,');
WriteLn('для 1 <= y <= ', n, ':');
for y := 1 to n do
begin
z := y * y + 63;
repeat
Inc(x);
w := x * x * x;
until w >= z;
if w = z then
Writeln('(x, y) = (', x, ' ,', y, ')')
else Dec(x);
end;
Write('Работа закончена, нажчмите <Enter>:');
ReadLn;
end.
Объяснение кода листинга программы
- В начале объявляются переменные x, y, z, w и n типа LongInt.
- Переменная n инициализируется значением MaxInt.
- Значение переменной n затем округляется в сторону меньшего значения с помощью функции Trunc.
- Из полученного значения вычитается 7, что приводит к новому значению переменной n.
- Переменная x инициализируется значением 0.
- Выводится строка «Все целые решения уравнения x^3 = y^2 + 63,», где x — это текущее значение переменной x, а y — это текущее значение переменной y.
- Далее идет цикл for, который выполняется от 1 до n.
- Внутри цикла переменная z инициализируется значением y*y+63.
- Затем выполняется повторное увеличение значения переменной x, пока значение переменной w (xxx) не станет больше или равно значению переменной z.
- Если значение переменной w равно значению переменной z, то выводится пара значений (x, y) с помощью строки «(x, y) = (», x, ' ,', y, ')».
- Если значение переменной w не равно значению переменной z, то значение переменной x уменьшается на 1.
- Цикл for завершается, и выводится сообщение «Работа закончена, нажчтите
:» - Считывается ввод пользователя с помощью функции ReadLn.