Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сбалансировать 5 переменных, Найти алгоритм, Вопрос на логику 
:(
    Опции темы
tolik777
Дата 8.9.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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. И т.п.
PM MAIL WWW ICQ   Вверх
Akina
Дата 8.9.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



А зачем подгонять, когда проще приравнять? И отклонение будет гораздо меньше 10%  smile 

Глупость какая-то, а не задача. Или поясняй "физику" процесса.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
tolik777
Дата 8.9.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну сели так легче станет, то можно использовать термин "приравнять".

Почему глупость? Это вполне реальная задача ля обменного пункта валют.
Всего пять валют, надо соблюдать баланс и знать какие валюты на какие надо обменивать, чтобы соблюдать этот баланс. Вопрос в том, что это надо все автоматизировать.

Было бы 2 переменные, то тут все понятно, с одной на другую перебросил и все. А когда их 5 или более...
PM MAIL WWW ICQ   Вверх
Akina
Дата 8.9.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Я же говорю - именно приравнять. Почему надо "около", когда можно сделать "в точности равно"?

А так алгоритм простой: сортируем по отклонению с учетом знака. Затем перебрасываем с (или на) того у кого абс. значение отклонения максимально, пока он не попадет в диапазон. Повторяем сортировку и переброску... до тех пор пока все не лягут в допустимые интервалы.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

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


Шустрый
*


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

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



Хммм. Спасибо. Вроде бы понял. Все так просто оказалось, не оттуда копал я наверное.
Сейчас попробую программно реализовать.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


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

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


 




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


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

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