Как выбрать (определить) максимальное из нескольких значений?

 

Как определять максимум (минимум) из нескольких значений?

MathMax позволяет вычислить только из двух, приходиться повторять эту функцию по числу сравниваемых (-1, разумеется).

Ничего другого нет?

 
 
alderru >>:

Ничего другого нет?

Скорость критична?

 

А дальше?

Мне нужно выбрать не только само значение, но и переменную которой оно принадлежит.

Вот запихал я в массив А, скажем, значения четырёх переменных: a, b, c, d.

Пусть максимальное будет, скажем, - с.

Вот получил, что максимальное значение находится в третьей ячейке массива - А[2] и равно оно, разумеется, значению с.

А дальше как? Перебором что ли определять, что это переменная с максимальная, а не b или d.

Скорость не критична, просто не хотелось загромождать код, повторяющимися операторами.

Может есть возможность сравнивать двухмерные массивы, скажем, по первому измерению, что бы потом вытащить значение из второго? И всё равно не получиться, так как нельзя же сделать массив с разным типом данных в каждом измерении (в первом - значение переменной, во втором - имя переменной).

 
alderru писал(а) >>

А дальше?

Мне нужно выбрать не только само значение, но и переменную которой оно принадлежит.

Вот запихал я в массив А, скажем, значения четырёх переменных: a, b, c, d.

Пусть максимальное будет, скажем, - с.

Вот получил, что максимальное значение находится в третьей ячейке массива - А[2] и равно оно, разумеется, значению с.

А дальше как? Перебором что ли определять, что это переменная с максимальная, а не b или d.

Скорость не критична, просто не хотелось загромождать код, повторяющимися операторами.

Вы б уж определились, что-ль, что Вам нужно то. Если требуется вычислить переменную с мин./макс. значением, то по-любому код не будет одной строкой.

Кстати, MathMin и MathMax тоже возвращают значения, а не переменную которой из оно принадлежит.

 

вторая половина вопроса вопрос вообще мягко говоря странная...

ArrayMaximum возвращает позицию максимального элемента. Вы будете знать и элемент и его позицию... Что вам ещё нужно то?

 
alderru >>:

А дальше?

Если Вам надо индекс, есть еще такая штука как iHighest iLowest.

 

Я даже пример привёл...

Конкретика: в мультике по определённому критерию нужно выбрать пару. У которой пары переменная больше ордер той и открываем.

Например обьём. Обозначил: EU_Vol, GC_Vol, UJ_Vol ...

Как мне определить что у EURUSD обьём максимальный, что бы на выходе получить string MaxSymb="EURUSD".

P.S. 'Найти минимальное среди нескольких значений' читал, не помогло.

 

Немного не в тему, но только немного.

Расширенный Max Min.

Юзать можно так:


#include <Extended_MaxMin.mqh>

//...

{
   double x1 = 1;
   double x2 = 4;
   double x3 = 5;

   double max = MaxOf(x1, x2, x3);
   double min = MinOf(x1, x2, x3);
}

Максимальное количество параметров -- 20.

Файлы:
 
alderru >>:

Я даже пример привёл...

Конкретика: в мультике по определённому критерию нужно выбрать пару. У которой пары переменная больше ордер той и открываем.

Например обьём. Обозначил: EU_Vol, GC_Vol, UJ_Vol ...

Как мне определить что у EURUSD обьём максимальный, что бы на выходе получить string MaxSymb="EURUSD".

P.S. 'Найти минимальное среди нескольких значений' читал, не помогло.

используйте массивы вместо переменных, например:

string Symb[]={"EURUSD","USDJPY"};
double Vol[2];

обьёму Vol[i] соответствует символ Symb[i].

 

Очень хорошая идея. Спасибо, Swan.

А я зациклился с двухмерным массивом, а дальше мозг тормозит.

Ещё раз спасибо.

Причина обращения: