Помогите написать прогу (цикл repeat-until, while-do)
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Помогите пожалуйста кто может, написать эту программу.
Условие: Найти минимальное натуральное число N, которое можно изобразить в виде суммы кубов двух натуральных чисел в двух вариантах (N=a^3+b^3=c^3+d^3). Программу нужно написать используя цикл repeat-until, или while-do, именно так, потому что эта программа была написана с использованием массива и её мне не засчитали, надо именно через какой - то из этих двух циклов.
Спасибо, надеюсь кто - то поможет.
Условие: Найти минимальное натуральное число N, которое можно изобразить в виде суммы кубов двух натуральных чисел в двух вариантах (N=a^3+b^3=c^3+d^3). Программу нужно написать используя цикл repeat-until, или while-do, именно так, потому что эта программа была написана с использованием массива и её мне не засчитали, надо именно через какой - то из этих двух циклов.
Спасибо, надеюсь кто - то поможет.
Числа a и b заданы ?
Ни что так не ограничивает фантазию программиста, как компилятор...
Ничего не задано, забыл написать что дан только ответ, что это число 1729, и надо что бы при включении программы она сразу выдавала 1729=что -то в 3ей + что то в 3ей = что то в 3ей + что то в 3ей
так тебе надо найти "чтото" ?????
Например так:
[syntax='Delphi']
program sumkub_pas;
const
N=1729;
var
A,B,C,D:longint;
bb:boolean;
function pow(x,p:real):real;
begin
pow:=exp(p*ln(x));
end;
begin
bb:=false;
repeat
inc(A);
repeat
inc(B);
bb:=(pow(A,3)+pow(B,3)=N);
until bb or (B=N) ;
if not bb then B:=1;
until bb;
C:=A;
D:=B;
bb:=false;
repeat
inc(C);
repeat
inc(D);
bb:=(pow(C,3)+pow(D,3)=N);
until bb or (D=N) ;
if not bb then D:=1;
until bb;
writeln(A,'^3+',B,'^3=',C,'^3+',D,'^3=',N);
readln;
end.
[/syntax]
[syntax='Delphi']
program sumkub_pas;
const
N=1729;
var
A,B,C,D:longint;
bb:boolean;
function pow(x,p:real):real;
begin
pow:=exp(p*ln(x));
end;
begin
bb:=false;
repeat
inc(A);
repeat
inc(B);
bb:=(pow(A,3)+pow(B,3)=N);
until bb or (B=N) ;
if not bb then B:=1;
until bb;
C:=A;
D:=B;
bb:=false;
repeat
inc(C);
repeat
inc(D);
bb:=(pow(C,3)+pow(D,3)=N);
until bb or (D=N) ;
if not bb then D:=1;
until bb;
writeln(A,'^3+',B,'^3=',C,'^3+',D,'^3=',N);
readln;
end.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Надо её как - то написать только этим циклом, нельзя использовать то - что ещё не пройдено, раз через массив не засчитали, думаю через функцию тоже, её мы ещё не проходили :/
Vovchik надо что бы программа нашла это число 1729, я то его знаю, но надо что бы программа его выдала и раписала на какую сумму кубов это число раскладывается.
Условие: Найти минимальное натуральное число N, которое можно изобразить в виде суммы кубов двух натуральных чисел в двух вариантах
Тоесть надо писать код, как будто программа не знает это число и должна его вычислить
Вот пример решения этой задачи через массив:
const
N = 20;
var
i,j,k,m,min: LongInt;
a: array[1..N,1..N] of LongInt;
begin
for i:=1 to N do
for j:=1 to N do
a[i,j]:=i*i*i+j*j*j;
min:=high(integer);
for i:=1 to N do
for j:=1 to N do
for k:=1 to N do
for m:=1 to N do
if (a[i,j] = a[k,m]) and (i <> k) and (j <> m) and
(i <> m) and (j <> k) and (a[i,j] < min) then
begin
min:=a[i,j];
writeln(a[i,j],'/',i,',',j,'/',k,',',m);
end;
end.
А надо как - то без массива, только циклом...
Условие: Найти минимальное натуральное число N, которое можно изобразить в виде суммы кубов двух натуральных чисел в двух вариантах
Тоесть надо писать код, как будто программа не знает это число и должна его вычислить
Вот пример решения этой задачи через массив:
const
N = 20;
var
i,j,k,m,min: LongInt;
a: array[1..N,1..N] of LongInt;
begin
for i:=1 to N do
for j:=1 to N do
a[i,j]:=i*i*i+j*j*j;
min:=high(integer);
for i:=1 to N do
for j:=1 to N do
for k:=1 to N do
for m:=1 to N do
if (a[i,j] = a[k,m]) and (i <> k) and (j <> m) and
(i <> m) and (j <> k) and (a[i,j] < min) then
begin
min:=a[i,j];
writeln(a[i,j],'/',i,',',j,'/',k,',',m);
end;
end.
А надо как - то без массива, только циклом...
>Помогите написать прогу (цикл repeat-until, while-do)
Juhn, стучись в аську 198-012-696... помогу написать прогу
Juhn, стучись в аську 198-012-696... помогу написать прогу

2 MotoCoder:
Функция pow с двумя аргументами тут немного лишняя. Все равно в программе используется только возведение в куб. Так что проще
function cube(x:integer):integer; begin cube:=x*x*x; end;
По самой задаче: делаем цикл от 1 до кубического корня из N. Аргумент цикла возводим в куб, вычитаем из N, из полученной разности извлекаем кубический корень. Если он целый - значит, запоминаем эти два числа (индекс цикла и найденный корень). Продолжаем дальше цикл, если находим еще одно такое число, которое не равно предыдущему найденному корню, то искомое N найдено.
Сам код:
N:=1;
summa_kubov:=false;
repeat
inc(N);
if (все то, что я написал выше) then summa_kubov:=true;
until summa_kubov;
Функция pow с двумя аргументами тут немного лишняя. Все равно в программе используется только возведение в куб. Так что проще
function cube(x:integer):integer; begin cube:=x*x*x; end;
По самой задаче: делаем цикл от 1 до кубического корня из N. Аргумент цикла возводим в куб, вычитаем из N, из полученной разности извлекаем кубический корень. Если он целый - значит, запоминаем эти два числа (индекс цикла и найденный корень). Продолжаем дальше цикл, если находим еще одно такое число, которое не равно предыдущему найденному корню, то искомое N найдено.
Сам код:
N:=1;
summa_kubov:=false;
repeat
inc(N);
if (все то, что я написал выше) then summa_kubov:=true;
until summa_kubov;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Пытался сделать так, но программа вырубается из-за runtime-ошибки.Хыиуду писал(а):2 MotoCoder:
Функция pow с двумя аргументами тут немного лишняя. Все равно в программе используется только возведение в куб. Так что проще
function cube(x:integer):integer; begin cube:=x*x*x; end;
К тому же, функцию я брал из другой своей программы.
Ни что так не ограничивает фантазию программиста, как компилятор...