Скачать MetaTrader 5

Может кто сталкивался [перебрать все варианты выражения]????

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересует заработок в MQL5 Cloud Network? Загляни в профиль!
Denis Timoshin
2251
Denis Timoshin 2013.09.26 07:32 

Существует следующая задача:

  необходимо перебрать все варианты выражения, вот сижу и ломаю голову как это сделать??? может есть мысли

переставлять можно местами члены выражения, как такое программно реализовать??? 

(int)(MathAbs(m_B5-m_B4-m_B3)-MathAbs(m_B3-m_B2-m_B1)-MathAbs(m_B1-m_B0-m_B)) 

члены этого выражения переменные 

George Merts
3593
George Merts 2013.09.26 07:43  

Не вполне ясно задание. Что значит "все варианты выражения" ? В чем заключаются варианты ? Просто варианты перестановки переменных ? Или еще и функции разные должны быть ?

Denis Timoshin
2251
Denis Timoshin 2013.09.26 07:47  
Laryx:

Не вполне ясно задание. Что значит "все варианты выражения" ? В чем заключаются варианты ? Просто варианты перестановки переменных ? Или еще и функции разные должны быть ?

Просто варианты перестановки членов выражения
Denis Timoshin
2251
Denis Timoshin 2013.09.26 07:49  
sandex:
А что это даст. От перемены мест слагаемых сумма не меняется.
вопервых это неслагаемые, во вторых там знак модуля
o_o
Модератор
23691
o_o 2013.09.26 07:51  
dentraf:
Просто варианты перестановки членов выражения
еще 3-4 примера покажите
Denis Timoshin
2251
Denis Timoshin 2013.09.26 07:53  
sergeev:
еще 3-4 примера покажите

исход            (int)(MathAbs(m_B5-m_B4-m_B3)-MathAbs(m_B3-m_B2-m_B1)-MathAbs(m_B1-m_B0-m_B))

варианты      (int)(MathAbs(m_B3-m_B4-m_B3)-MathAbs(m_B5-m_B2-m_B1)-MathAbs(m_B1-m_B0-m_B))

                    (int)(MathAbs(m_B5-m_B2-m_B3)-MathAbs(m_B3-m_B4-m_B1)-MathAbs(m_B1-m_B0-m_B)) 

                    (int)(MathAbs(m_B5-m_B4-m_B3)-MathAbs(m_B3-m_B2-m_B0)-MathAbs(m_B1-m_B1-m_B)) 

o_o
Модератор
23691
o_o 2013.09.26 07:56  
два раза B1, B3 - это так надо?
Alexander Bereznyak
21431
Alexander Bereznyak 2013.09.26 07:56  
Количество комбинаций внутри функции MathAbs будет 8, а если надо перебирать не только внутри то получиться 512 комбинаций.
Denis Timoshin
2251
Denis Timoshin 2013.09.26 07:58  
sergeev:
два раза B1, B3 - это так надо?
да
Denis Timoshin
2251
Denis Timoshin 2013.09.26 08:00  
sandex:
Количество комбинаций внутри функции MathAbs будет 8, а если надо перебирать не только внутри то получиться 512 комбинаций.
Как реализовать программно?
o_o
Модератор
23691
o_o 2013.09.26 08:17  

1. проиндексируй переменные. (закрепи за каждой переменной свой номер)

2. У тебя 9 позиций - поэтому создай массив из 9 элементов P[9]

3. Каждый элемент массива - это индекс переменной.

4. Прогоняя в цикле все индексы P[9]  от [0 0 0 0 0 0 0 0 0]  до [9 9 9 9 9 9 9 9 9]  получай комбинации.  исключая комбинации с наличием двух одинаковых номеров!!!

5. имея полученную комбинацию - расставляй числа на свои места и вычисляй выражение.

Enjoy

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий