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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение fs444 » 24.10.2008 23:20:38

Нужно представить введенное с клавиатуры натуральное число в виде суммы трех введенных с клавиатуры натуральных чисел. Я написал такой код:
Код: Выделить всё
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.
fs444
новенький
 
Сообщения: 38
Зарегистрирован: 09.09.2008 23:55:30

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

Сообщение B4rr4cuda » 25.10.2008 02:53:17

Например так
Код: Выделить всё
writeln( <число с точкой>:2:2)

Я уже не помню, что обозначает одно из чисел, но другое точно кол-во выводимых знаков после запятой. :D
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

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

Сообщение Михаил Крамер » 25.10.2008 13:20:47

А вы уверены, что sqrt(sqr_z) всегда будет натуральным? Я нет...
Михаил Крамер
новенький
 
Сообщения: 73
Зарегистрирован: 08.02.2008 14:26:40

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

Сообщение fs444 » 25.10.2008 14:46:04

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;
fs444
новенький
 
Сообщения: 38
Зарегистрирован: 09.09.2008 23:55:30

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

Сообщение Михаил Крамер » 25.10.2008 14:51:40

Ну коли пашет, то порядок. По идее, должно бы... Токмо как то вы задачу странно поставили...

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

И где же ввод с клавы трёх чисел?
Михаил Крамер
новенький
 
Сообщения: 73
Зарегистрирован: 08.02.2008 14:26:40

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

Сообщение SergeySmlInf » 29.10.2008 13:23:41

А уж не замахнулись ли ваши преподаватели на Великую Теорему :shock: ?
SergeySmlInf
новенький
 
Сообщения: 40
Зарегистрирован: 02.10.2007 07:59:26
Откуда: Смоленск


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru