Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 144
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот Я уже запутался)
У Вас есть массив:
Что в итоге должна вернуть функция и почему? Количество совпадений каждого числа, или конкретное максимальное число, или ... Я что-то написал, но наверное не то, и не так?
Я не знаю как объяснить...
Видим массив: 1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
Помечаем одинаковые числа одним и тем же цветом (если число в единственном экземпляре, то для него нет дубля - оно не надо):
1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
Считаем количество чисел, имеющих разный цвет: 3 - вот это и есть результат.
Вы старый код проверили. Перепроверьте.
Я не знаю как объяснить...
Видим массив: 1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
Помечаем одинаковые числа одним и тем же цветом (если число в единственном экземпляре, то для него нет дубля - оно не надо):
1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
Считаем количество чисел, имеющих разный цвет: 3 - вот это и есть результат.
Может быть)
{
int Arr[]={1, 2, 3, 1, 2, 1, 2, 2, 1, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
Comment( GetM(Arr) );
}
int GetM(int &Mas[])
{
int MasTemp[][2]; // Временный массив
int c=0,t=0;
ArraySort(Mas);
int ArrSize= ArraySize(Mas);
for(int i=0; i<ArrSize; i++) {
for(int x=i; x<ArrSize; x++) {
if(Mas[i]==Mas[ArrayMinimum(Mas,WHOLE_ARRAY,x)]) {
c++;
}
}
if(c>0) {
t++;
ArrayResize(MasTemp,t);
MasTemp[t-1][0]= c;
MasTemp[t-1][1]= Mas[i];
}
c=0;
}
int ArrRange=ArrayRange(MasTemp,0);
if(ArrRange>0) {
ArraySort(MasTemp);
// Comment("Цифра: ",MasTemp[ArrRange-1][1],", Количество: ",MasTemp[ArrRange-1][0]);
return( MasTemp[ArrRange-1][1] );
}
return(-1);
}
Вот ... странный я какой-то ... вродь брал от-туда, а получилось из другого места
template <typename T>
int Strange( const T &InArray[], const int Repeat = 2 )
{
int Res = 0;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Tmp = 1;
for (int i = 1; i < Size; i++, Tmp++)
if (Array[i - 1] != Array[i]) // если будут структуры, то есть более универсальная запись
{
if (Tmp >= Repeat)
Res++;
Tmp = 0;
}
if (Tmp >= Repeat)
Res++;
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 2, 3, 3, 3, 4, 4, 4, 4};
for (int i = 1; i <= 4; i++)
Print(Strange(Array, i));
}
Обобщил
Может быть)
Обобщил
Вот это интересно
При такой записи Array может быть не только числового типа, но и любой простой структурой.
Другое дело, что ArraySort для структур, конечно, не работает.
При такой записи Array может быть не только числового типа, но и любой простой структурой.
Другое дело, что ArraySort для структур, конечно, не работает.
Вот-вот... А структуры обычно сложные. И их ещё сортировать надо...
Сложные - это содержащие объекты (строки, например).
MqlTick - простая структура.
MqlTradeRequest - сложная.
ArraySort и для простых структур написать легко.