| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > сложная математическая задача |
| Автор: kovalenko123 29.12.2010, 22:57 |
| Привет всем программистам! Можно ли как нибудь сделать такую штуку имеем число константу например 20 и 5 переменных так вот из низ надо случайным образом сгенерировать число 20 это как нибудь возможно? |
| Автор: Данкинг 29.12.2010, 23:43 |
| В смысле - разложить константу на пять слагаемых? Иначе тогда непонятно, откуда следует брать значения переменных. |
| Автор: superVad 30.12.2010, 10:48 |
| Играли раньше в игру такую - в автобусе дают талончики, на них есть номер - так надо было, при помощи различных арифметических действий получить из цифр номера 100. |
| Автор: CROTishka 30.12.2010, 15:58 |
| это скорее в "алгоритмы" надо было задавать. и уточните задание - какие операции над числами возможны? |
| Автор: kovalenko123 30.12.2010, 20:47 | ||
Здравствуйте всем!
Абсолютно любые лишь бы число получилось в сумме такое же как первое число Есть такая идея к примеру поступает число 30 я беру для каждой переменный случайное значение с помощью рандома от 1 до числа (которое требуется достич в конце ) (6 -- 30/5) поделенного на 5 и в цикле ифом сравниваю когда они совпадут делаю брейк это пока в теории.... как думаете на практике заработает? |
| Автор: kovalenko123 3.1.2011, 11:40 | ||
Имеем число 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 и тд |
| Автор: Poseidon 3.1.2011, 15:05 | ||||
| Т.е., как я вижу, сумму должны давать. Ну тут вообще все просто. Есть в Дельфи замечательная функция random. Для первого числа берешь диапазон от 0 до (х-n+1), где х-это твое то самое число (22 в примере), n-количество ответов (5 в примере). Т.е., для твоего примера берешь диапазон от 0 до 18. В дельфи это будет выглядеть так:
Для второго числа уменьшаешь диапазон на величину первого числа. Т.е. от 0 до (х-n+1+х1). Для твоего примера:
Для третьего числа уменьшаешь диапазон на сумму первых двух чисел. Т.е. от 0 до (х-n+1+х1+х2). Ну и так далее. |
| Автор: kovalenko123 6.1.2011, 11:14 |
| Poseidon Интересный метод сегодня попробую Большое спасибо!!! |
| Автор: Poseidon 6.1.2011, 11:33 |
| Епть, написал "уменшаешь", а поставил +. Минус там надо... |
| Автор: ziga 13.1.2011, 09:51 | ||||||
Лучше немного переделать что бы исключить результаты с нолями:
вот код
в таком случае самый простой вориант будет выглядить:
|
| Автор: morpheyushka 13.1.2011, 12:28 | ||
| А зачем нули исключать...или это не числа? вот мой вариант)))
|
| Автор: kovalenko123 14.1.2011, 09:06 |
| Ребята спасибо большое! |