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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2010, 22:28   #1
Neitrosha
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 29
По умолчанию Разбиение натурального числа на 3 слагаемых

смысл задачи-дано число, требуется разбить натуральное число на три слагаемых, причем чтобы они не повторялись, как пример-число 8-это 5+2+1
так-то пара идей есть, но как это реализовать?

так-то получается, что число A=b+c+d, все они Integer, и b<>c, b<>d, d<>c, но вот с самим кодом полные проблемы. Пытался сделать на основе обычного разбиения чисел-вообще ничего не получилось
Neitrosha вне форума Ответить с цитированием
Старый 26.10.2010, 22:32   #2
ZaRDaK
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 197
По умолчанию

b = a - 3
c = 2
d = 1
ZaRDaK вне форума Ответить с цитированием
Старый 26.10.2010, 23:37   #3
Neitrosha
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 29
По умолчанию

да не то я имел в виду
программу для всех чисел, абсолютно для любых, чтобы разбивала на три слагаемых

8 я привел как пример
разбить натуральное число на три слагаемых, причем чтобы они не повторялись-вот это

Последний раз редактировалось Stilet; 27.10.2010 в 16:39.
Neitrosha вне форума Ответить с цитированием
Старый 26.10.2010, 23:53   #4
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

любое натуральное число N >= 6 можно представить как 1 + 2 + (N - 3)

Последний раз редактировалось Kingdom_Reborn; 27.10.2010 в 17:47.
Kingdom_Reborn вне форума Ответить с цитированием
Старый 27.10.2010, 02:41   #5
DESS
 
Регистрация: 26.09.2010
Сообщений: 6
По умолчанию

b:=random(a-2);
c:=random(a-b);
d:=a-b-c;
if a=b then
надеюсь смысл понятен
DESS вне форума Ответить с цитированием
Старый 27.10.2010, 16:05   #6
Neitrosha
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 29
По умолчанию

да, смысл понятен, задача так-то решена
но вопрос-а если вообще чтобы произвольные числа выводила? ну, то есть, число 262 - 100+101+61. чтобы выводило вообще произвольные числа. это вообще реально написать без подготовки? да и хотелось бы увидеть сам код программы, если кому-нибудь не сложно, просто интересно
Neitrosha вне форума Ответить с цитированием
Старый 27.10.2010, 17:46   #7
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Код:
var
    x, a, b, c: Longint;
begin
    Randomize;
    ReadLn(x);
    a := 1 + Random(x div 4);
    b := a + 1 + Random(x div 3);
    c := x - a - b;
    while (c = a) or (c = b) do
    begin
      Inc(b);
      Dec(c);
    end;
    WriteLn(x, ' = ', a, ' + ', b, ' + ', c);
    ReadLn;
end.

Последний раз редактировалось Kingdom_Reborn; 27.10.2010 в 18:01.
Kingdom_Reborn вне форума Ответить с цитированием
Старый 27.10.2010, 18:00   #8
Neitrosha
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 29
По умолчанию

спасииибо)
и, как понимаю, нужно два Едита и один Баттон?
просто я полный новичок в программировании, а хочется хоть чему-то научиться
Neitrosha вне форума Ответить с цитированием
Старый 27.10.2010, 18:01   #9
Neitrosha
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 29
По умолчанию

и вбивать весь этот код, в принципе, нужно в баттон?
Neitrosha вне форума Ответить с цитированием
Старый 27.10.2010, 18:04   #10
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

я код немного подправил...

//////////////////////////////

В Delphi кидай на форму два Edit'a и одну кнопку, для кнопки пиши код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  x, a, b, c, code: Integer;
begin
  Val(Edit1.Text, x, code);
  if code <> 0 then
  begin
    ShowMessage('Введите число');
    Exit;
  end;
  Randomize;
  a := 1 + Random(x div 4);
  b := a + 1 + Random(x div 3);
  c := x - a - b;
  while (c = a) or (c = b) do
  begin
    Inc(b);
    Dec(c);
  end;
  Edit2.Text := IntToStr(a) + ' + ' + IntToStr(b) + ' + ' + IntToStr(c);
end;
В Edit1 вводи число, жми на кнопку, и в Edit2 появится результат...

Последний раз редактировалось Kingdom_Reborn; 27.10.2010 в 18:12.
Kingdom_Reborn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти сумму цифр заданного натурального числа dima.m Microsoft Office Excel 6 06.12.2010 11:30
вывод слагаемых совершенного числа fs444 Общие вопросы C/C++ 4 24.03.2010 23:04
Простенькая задача в Делфи: разбор натурального числа Fantazerishka Помощь студентам 4 23.09.2009 17:13
Составить программу нахождения натурального числа n livestrong Помощь студентам 14 24.12.2008 18:15
вывод на экран наибольшего делителя натурального числа N, меньше заданного натурального M Fatality Помощь студентам 2 03.12.2008 23:27