Даны 10 чисел, необходимо распределить их по убыванию.

 

Даны 10 чисел, необходимо распределить их по убыванию. Например:

2

5

1

6

8

7

8

4

3

0

Нужно определить какое число больше. Результат должен быть таким:

8

8

7

6

5

4

3

2

1

0

Каким образом можно реализовать это в MQL4?

 
Как насчет ArraySort?
 
ExpertTrader:

Даны 10 чисел, необходимо распределить их по убыванию. Например:

2

5

1

6

8

7

8

4

3

0


Способов много, можно восполльзоваться следующим

bool sort=false;

int i,j;

int tmp;

int array arr[]={2;5;1;6;8;7;8;4;3;0}

K=ArraySize(arr);

while (sort=false) {

sort=true;

for (i=1i<K;i++)

if(arr[i-1]<arr[i]) {

sort=false;

tmp=arr[i-1];

arr[i-1]=arr[i];

arr[i]=tmp;

}

}

}

Вот примерно так. Есть другие методы.

 

Да, наверное то что надо.

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

из 8,8,7,6,5,4,3,2,1,0, мне нужно получить третье число, т.е. x=7;

 
ExpertTrader:

Да, наверное то что надо.

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

из 8,8,7,6,5,4,3,2,1,0, мне нужно получить третье число, т.е. x=7;


Так массив тот же самый. надо третий, а это arr[2];

Для проверки можно добавить следующее

for (i=0;i<K;i++)

Print("arr[",i,"]=",arr[i]);

 

Могу ли я получить нужное число так:

num_array[3]={2,5,1,6,8,7,8,4,3,0};
int x = ArraySort(num_array,WHOLE_ARRAY,0,MODE_DESCEND);
Будет ли x в данном случае равен 7?
 
ExpertTrader:

Могу ли я получить нужное число так:

num_array[3]={2,5,1,6,8,7,8,4,3,0};
int x = ArraySort(num_array,WHOLE_ARRAY,0,MODE_DESCEND);
Будет ли x в данном случае равен 7?


Да. Но только в убери размер массива. Ты его задаешь по другому.

num_array[]={2,5,1,6,8,7,8,4,3,0};

 
Чего-то не пойму. А как я тогда получю третье по величине число?
 
ExpertTrader:
Чего-то не пойму. А как я тогда получю третье по величине число?


Print(num_array[3]);

Можно

int m3=num_array[3];

 

Хоть убей, не догоняю. Так чтоли:

int num_array[]={2,5,1,6,8,7,8,4,3,0};
ArraySort(num_array,WHOLE_ARRAY,0,MODE_DESCEND);
int x = num_array[3];
?
 

Всем огромное спасибо, разобрался.

Для получения третьего по величине числа нужно писать: int x = num_array[2];