- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
Program zadacha;
var
i,chislo,x,y,m,n:integer;
begin
while i<1 do begin
for x:=0 to chislo do begin
for y:=0 to chislo do begin
for m:=0 to chislo do begin
for n:=0 to chislo do begin
if (chislo=x*x*x+y*y*y) and (chislo=m*m*m+n*n*n) and (x<>m) and (x<>y) and (y<>m) and (y<>n) then i:=1 else chislo:=chislo+1;
end;
end;
end;
end;
end;
Writeln(chislo);
end.
Вот так находят "минимальное натуральное число представимое двумя различными способами в виде суммы кубов двух натуральных чисел"
лаба, но какая...
когда нужно написать быстро и нет времени думать как лучше, то можно и так писать.
это ж лаба, ёпта.
Убило напрочь...
chislo, i, чему они равны? Да и где изменение i внутри цикла?
... then i:=1 else chislo:=chislo+1;
Автор, конечно, надеется на то,что они будут = 0, но тогда не ясно с циклами:
for x:=0 to chislo do
От 0 до 0 что ли... Т.е. все равно чего-то не хватает.
Да. То есть пройдет 1 виток цикла.
Паскалевский цикл
for n:=0 to chislo do
тоже что на Си
for(n=0; n<=chislo; n++)
Но мне еще интересно, почему бы вместо i: integer; не использовать i: boolean;
И, по моему, лучше явно определять начальные значения переменных.
т.е. a) кол-во итераций предвычисляется b) запись в счетчик не имеет смысла c) проверка условия в каждой итерации отсутствует
это как бы к экспонату не относится, но матчасть надо знать
for (int N = M - L + 1, I = L; N > 0; --N, ++I) ...
В смысле "запись в счетчик не имеет смысла"?
даже если хакнуть то в начале итерации получит правильное значение а не инкрементируется
(с) выполняет бесконечный цикл за 6 секунд.
в любую точку вселенной -- за пять секунд. (ц)