Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2012, 17:40   #1
Draurign
Пользователь
 
Регистрация: 18.07.2012
Сообщений: 10
По умолчанию Определить, представимо ли число в виде суммы трех квадратов

Пытаюсь прописать прогу, определяющую, представимо ли некое натуральное число n в виде суммы трёх квадратов натуральных чисел m, k и p.
Получилось такое:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
n, m, k, p : integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
n:=StrToInt(Edit1.Text);
if n=Power(m, 2)+Power(k, 2)+Power(p, 2)
then
Label2.Caption:='Представимо'
else
Label2.Caption:='Не представимо'

end;

end.

При проверке выдает всегда "не представимо". Где ошибка?
Draurign вне форума Ответить с цитированием
Старый 15.08.2012, 18:08   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

а как определяются m, k и p?
Чему они равны?
Sibedir вне форума Ответить с цитированием
Старый 15.08.2012, 18:12   #3
Draurign
Пользователь
 
Регистрация: 18.07.2012
Сообщений: 10
По умолчанию

Это любые натуральные числа. К примеру, 29 представимо как 2^2+3^2+4^2, а 13 не представимо. Суть в том, чтобы ответить, способно введенное число быть разложенным таким образом или нет.
Draurign вне форума Ответить с цитированием
Старый 15.08.2012, 18:22   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

В программе вашей как определяются их значения?
Sibedir вне форума Ответить с цитированием
Старый 15.08.2012, 18:29   #5
Draurign
Пользователь
 
Регистрация: 18.07.2012
Сообщений: 10
По умолчанию

Эээ,
n, m, k, p : integer;
просто как целые числа. Пардон, но я плаваю по азам, и если бы знал, как их толком обозначить, проблемы бы не существовало.
Draurign вне форума Ответить с цитированием
Старый 15.08.2012, 18:38   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Ваша задача
Цитата:
прописать прогу, определяющую, представимо ли некое натуральное число n в виде суммы трёх квадратов натуральных чисел
Так и пытайтесь это сделать.
Я пытаюсь сказать, что в вашей программе нет кода, который решает эту задачу.

Должно выть что-то типа

Код:
Label2.Caption:='Не представимо';
n:=StrToInt(Edit1.Text);
for m := 1 to 1000 do
  for k := 1 to 1000 do
    for p := 1 to 1000 do
      if n = (m*m + k*k + p*p) then begin
        Label2.Caption:='Представимо';
        ... выход из функции
      end;
добавил ссылку --------------------------------------------
http://mathworld.wolfram.com/SumofSquaresFunction.html

Последний раз редактировалось Sibedir; 15.08.2012 в 18:45.
Sibedir вне форума Ответить с цитированием
Старый 15.08.2012, 18:52   #7
Draurign
Пользователь
 
Регистрация: 18.07.2012
Сообщений: 10
По умолчанию

Спасибо.
То есть я сначала обозначаю Label2.Caption:='Не представимо', а потом, если n отвечает заявленным требованиям, заменяю значение Label2 на "Представимо", так?

И еще, если m, k и p от 1 до 1000, значит, результат будет ограничен? Нельзя ли как-нибудь объявить натуральное число, не имеющее верхней границы?
Draurign вне форума Ответить с цитированием
Старый 15.08.2012, 18:54   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Да я вам не решение дал, а
Цитата:
что-то типа
Научитесь сначала решать эту задачу на бумажке, а потом запрограммируйте алгоритм.

При решении методом перебора без верхней границы не обойтись. На то он и метод перебора. Но границей может служить, например, само число n или модуль корня из n : )

Последний раз редактировалось Sibedir; 15.08.2012 в 18:58.
Sibedir вне форума Ответить с цитированием
Старый 15.08.2012, 19:00   #9
Draurign
Пользователь
 
Регистрация: 18.07.2012
Сообщений: 10
По умолчанию

Прекрасно понимаю, что не решение, и благодарен за указание на ошибку. Но это 4я попытка написать программу самостоятельно, поэтому данное в начале темы решение - все, что я смог из себя выжать.
Еще раз спасибо.
Draurign вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклы (разложить число в ряд суммы квадратов) Horatii Паскаль, Turbo Pascal, PascalABC.NET 8 08.10.2011 11:57
Можно ли число N представить в виде сумы двух квадратов натуральных чисел? Dima170792 Помощь студентам 2 24.06.2011 08:53
число в виде суммы квадратов натуральных чисел gambuz Паскаль, Turbo Pascal, PascalABC.NET 0 04.10.2010 11:07
Определить представимо ли число содержащиеся в ячейке 0200 в в виде суммы 2х простых чисел. Lenusy Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 06.10.2009 08:26
Дано натуральное число n. Можно ли представить его в виде суммы двух квадратов натуральных чисел? Сеня Помощь студентам 3 29.01.2009 01:17