Страница 1 из 1

Программа представления числа в виде суммы трех квадр

СообщениеДобавлено: 24.10.2008 23:20:38
fs444
Нужно представить введенное с клавиатуры натуральное число в виде суммы трех введенных с клавиатуры натуральных чисел. Я написал такой код:
Код: Выделить всё
Program l9_n5;
{представление числа в виде суммы трех квадратов натур. чисел}
Var n,x,y,z,sqr_x,sqr_y,sqr_z:Longint;
Begin
  Readln(n);
  For x:=1 To n Do Begin
   For y:=1 To n Do Begin
    For z:=1 To n Do Begin
    sqr_x:=x*x;
    sqr_y:=y*y;
    sqr_z:=z*z;
    If (sqr_x+sqr_y+sqr_z=n) Then Writeln(x,'^2+',y,'^2+',z,'^2=',n);
   End;
  End;
  Readln;
End.

Но я хочу убрать цикл For z:=1 To n Do Begin, и вместо него в цикле For y:=1 To n Do Begin получать z на путем вычетания из n квадратов x и y.
Код: Выделить всё
Program l9_n5;
{представление числа в виде суммы трех квадратов натур. чисел}
Var n,x,y,z,sqr_x,sqr_y,sqr_z:Longint;
Begin
  Readln(n);
  For x:=1 To n Do Begin
   For y:=1 To n Do Begin
    For z:=1 To n Do Begin
    sqr_x:=x*x;
    sqr_y:=y*y;
    sqr_z:=n-(sqr_x+sqr_y);
   End;
  End;
  Readln;
End.

Но здесь я нахожу квадрат числа z, а само число z вывести не получается. Функция scrt(scr_z) выводит корень из числа z, но к нему добавляет много нулей и "E+00". Как мне получить чистый корень? Например, из 4 - 2, вместо 2.00000000Е+00.

Re: Программа представления числа в виде суммы трех ква

СообщениеДобавлено: 25.10.2008 02:53:17
B4rr4cuda
Например так
Код: Выделить всё
writeln( <число с точкой>:2:2)

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

Re: Программа представления числа в виде суммы трех ква

СообщениеДобавлено: 25.10.2008 13:20:47
Михаил Крамер
А вы уверены, что sqrt(sqr_z) всегда будет натуральным? Я нет...

Re: Программа представления числа в виде суммы трех ква

СообщениеДобавлено: 25.10.2008 14:46:04
fs444
B4rr4cuda, спасибо
А вы уверены, что sqrt(sqr_z) всегда будет натуральным? Я нет...

Я тоже нет. Это надо проверить. Я написал
Код: Выделить всё
   For y:=1 To  trunc(sqrt(n))  Do Begin
    sqr_x:=x*x;
    sqr_y:=y*y;
    sqr_z:=n-(sqr_x+sqr_y);
    If (sqr_z>0) Then begin
     z:=trunc(sqrt(sqr_z));
     If (sqr(z)=sqr_z) And (sqr_x+sqr_y+sqr_z=n) Then Writeln(x,'^2+',y,'^2+',z,'^2=',n);
    End;
   End;

Re: Программа представления числа в виде суммы трех ква

СообщениеДобавлено: 25.10.2008 14:51:40
Михаил Крамер
Ну коли пашет, то порядок. По идее, должно бы... Токмо как то вы задачу странно поставили...

Нужно представить введенное с клавиатуры натуральное число в виде суммы трех введенных с клавиатуры натуральных чисел.

И где же ввод с клавы трёх чисел?

Re: Программа представления числа в виде суммы трех ква

СообщениеДобавлено: 29.10.2008 13:23:41
SergeySmlInf
А уж не замахнулись ли ваши преподаватели на Великую Теорему :shock: ?