![]() |
|
![]() ![]() ![]() |
|
tolik777 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.6.2006 Репутация: нет Всего: 2 |
Пишу небольшую программку на РНР. Встала такая задача.
Есть 5 переменных: a,b,c,d,e. Есть 5 констант: Ca, Cb, Cc, Cd, Ce. Константы - это проценты. Сумма всех констант равана 100%. Тоже самое и переменные. К примеру таблица: | значение константы | значение переменной ___________ a | 55 | 15 b | 20 | 35 c | 15 | 13 d | 7 | 20 e | 3 | 37 ___________ Нужно как бы подогнать значение переменных к их константам, если отклонение от заданной составляет более чем 10%. Т.е. к примеру в данном примере переменную с мы не трогаем, а остальные 4 нужно изменять. Т.е. на выходе должны получится что-то типа этого: с переменной b перебросить 17.6% на переменную b. С переменной e, 20% на a. И т.п. |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
А зачем подгонять, когда проще приравнять? И отклонение будет гораздо меньше 10%
![]() Глупость какая-то, а не задача. Или поясняй "физику" процесса. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
tolik777 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.6.2006 Репутация: нет Всего: 2 |
Ну сели так легче станет, то можно использовать термин "приравнять".
Почему глупость? Это вполне реальная задача ля обменного пункта валют. Всего пять валют, надо соблюдать баланс и знать какие валюты на какие надо обменивать, чтобы соблюдать этот баланс. Вопрос в том, что это надо все автоматизировать. Было бы 2 переменные, то тут все понятно, с одной на другую перебросил и все. А когда их 5 или более... |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Я же говорю - именно приравнять. Почему надо "около", когда можно сделать "в точности равно"?
А так алгоритм простой: сортируем по отклонению с учетом знака. Затем перебрасываем с (или на) того у кого абс. значение отклонения максимально, пока он не попадет в диапазон. Повторяем сортировку и переброску... до тех пор пока все не лягут в допустимые интервалы. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
tolik777 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 133 Регистрация: 19.6.2006 Репутация: нет Всего: 2 |
Хммм. Спасибо. Вроде бы понял. Все так просто оказалось, не оттуда копал я наверное.
Сейчас попробую программно реализовать. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |