Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сложная математическая задача, выбрать 5 чисел в сумму заданной 
V
    Опции темы
kovalenko123
Дата 29.12.2010, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Привет всем программистам!
Можно ли как нибудь сделать такую штуку имеем число константу например 20 и 5 переменных так вот из низ надо случайным образом сгенерировать число 20 это как нибудь возможно? 
PM MAIL ICQ   Вверх
Данкинг
Дата 29.12.2010, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



В смысле - разложить константу на пять слагаемых? Иначе тогда непонятно, откуда следует брать значения переменных.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
superVad
Дата 30.12.2010, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



Играли раньше в игру такую - в автобусе дают талончики, на них есть номер - так надо было, при помощи различных арифметических действий получить из цифр номера 100.
PM MAIL   Вверх
CROTishka
Дата 30.12.2010, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 30.7.2009

Репутация: 1
Всего: 2



это скорее в "алгоритмы" надо было задавать.
и уточните задание - какие операции над числами возможны?
PM MAIL   Вверх
kovalenko123
Дата 30.12.2010, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Здравствуйте всем! 

Цитата

какие операции над числами возможны


Абсолютно любые лишь бы число получилось в сумме такое же как первое число

Есть такая идея 

к примеру поступает число 30 

я беру для каждой переменный случайное значение с помощью рандома от 1 до числа (которое требуется достич в конце ) (6 -- 30/5) поделенного на 5

и в цикле ифом сравниваю когда они совпадут делаю брейк это пока в теории.... как думаете на практике заработает?



PM MAIL ICQ   Вверх
Poseidon
Дата 3.1.2011, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(kovalenko123 @  30.12.2010,  20:47 Найти цитируемый пост)
и в цикле ифом сравниваю когда они совпадут делаю брейк это пока в теории.... как думаете на практике заработает?
А на практике возможен вечный цикл и, следовательно, зависание программы.

Лично я все-равно не понял что надо.
Цитата(kovalenko123 @  29.12.2010,  22:57 Найти цитируемый пост)
из низ надо случайным образом сгенерировать число 20

20 в сумме? В произведении? В разности? Может быть в корне или в квадрате? Напиши хоть пример что нужно получить.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
kovalenko123
Дата 3.1.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Цитата

Напиши хоть пример что нужно получить. 


Имеем число 22 а так же имеем 5 переменных с помощью которых мы получим конечно число 22 

к примеру 

x1 = 1
x2 = 10
x3 = 1
x4 = 5
x5 = 5
при следующем нажатии на кнопку те же переменные превратятся в 

x1 = 5
x2 = 5
x3 = 5
x4 = 5
x5 = 2

еще нажимаем они превращаются в 

x1 = 2
x2 = 5
x3 = 5
x4 = 8
x5 = 2

и тд


PM MAIL ICQ   Вверх
Poseidon
Дата 3.1.2011, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Т.е., как я вижу, сумму должны давать. Ну тут вообще все просто. Есть в Дельфи замечательная функция random.
Для первого числа берешь диапазон от 0 до (х-n+1), где х-это твое то самое число (22 в примере), n-количество ответов (5 в примере). Т.е., для твоего примера берешь диапазон от 0 до 18. В дельфи это будет выглядеть так: 
Код

randomize;
x1:= random(19);

Для второго числа уменьшаешь диапазон на величину первого числа. Т.е. от 0 до (х-n+1+х1). Для твоего примера:
Код

x1:= random(19+x1);

Для третьего числа уменьшаешь диапазон на сумму первых двух чисел. Т.е. от 0 до  (х-n+1+х1+х2).

Ну и так далее.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
kovalenko123
Дата 6.1.2011, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Poseidon
Интересный метод сегодня попробую Большое спасибо!!!
PM MAIL ICQ   Вверх
Poseidon
Дата 6.1.2011, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Епть, написал "уменшаешь", а поставил +. Минус там надо...


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
ziga
Дата 13.1.2011, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: 1
Всего: 1



Лучше немного переделать что бы исключить результаты с нолями:

Код

значения = 22

x1 = 22
x2 = 0
x3 = 0
x4 = 0
x5 = 0



вот код

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  x1, x2, x3, x4, x5, iNum : integer;
begin
  Randomize;
  iNum := StrToInt(Edit1.Text);
  x1 := Random(iNum - 4) + 1;
  x2 := Random(iNum - 3 - x1) + 1;
  x3 := Random(iNum - 2 - (x1 + x2)) + 1;
  x4 := Random(iNum - 1 - (x1 + x2 + x3)) + 1;
  x5 := Random(iNum - (x1 + x2 + x3 + x4)) + 1;
end;


в таком случае самый простой вориант будет выглядить:


Код

значения = 22

x1 = 18
x2 = 1
x3 = 1
x4 = 1
x5 = 1



PM MAIL   Вверх
morpheyushka
Дата 13.1.2011, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 3
Всего: 8



А зачем нули исключать...или это не числа?
вот мой вариант)))
Код

procedure TForm18.Button1Click(Sender: TObject);
var
  x1, x2, x3, x4, x5, iNum : Integer;
  Sum: Integer;
begin
  x1 := 0;
  x2 := 0;
  x3 := 0;
  x4 := 0;
  x5 := 0;
  Randomize;
  Sum := StrToIntDef(Edit1.Text, 0);
  x1 := Random(Sum + 1);
  if Sum <> x1 then begin
    x2 := Random(Sum + 1 - x1);
    if Sum <> (x1 + x2) then begin
      x3 := Random(Sum + 1 - x1 -x2);
      if Sum <> (x1 + x2 + x3) then begin
        x4 := Random(Sum + 1 - x1 - x2 - x3);
        if Sum <> (x1 + x2 + x3 + x4) then begin
          x5 := Sum - (x1 + x2 + x3 + x4);
        end;
      end;
    end;
  end;

  Memo1.Lines.Add(Format('x1 = %d', [x1]));
  Memo1.Lines.Add(Format('x2 = %d', [x2]));
  Memo1.Lines.Add(Format('x3 = %d', [x3]));
  Memo1.Lines.Add(Format('x4 = %d', [x4]));
  Memo1.Lines.Add(Format('x5 = %d', [x5]));
end;




--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
kovalenko123
Дата 14.1.2011, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Ребята спасибо большое! 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.