Vitaly Muzichenko: Vieni a casa tua per il codice, o pubblicalo se non ti dispiace)
Beh, prendi una birra e vieni a trovarci ;)
Solo che non ricordo quale dimensione dell'array hai scritto - forse non ne hai bisogno, e mi spingo ...
//+------------------------------------------------------------------+ //| Пузырьковая сортировка двумерного массива | //+------------------------------------------------------------------+ template<typename T> void ArraySortBubbleTwoDims(T& array[][TWO_DIM], int sort_dimension=0, int sort_direction=0) { T t=0; int k=ArrayRange(array,1); // Количество колонок int n=ArrayRange(array,0); // Количество строк
void BySort(double &mas[][3]) { // Сортируем по размеру лота от большего к меньшему ArraySort(mas); ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код }
Errore: "'m' - conversione dei parametri non consentita e.mq5 2076 20"
void BySort(double &mas[][3]) { // Сортируем по размеру лота от большего к меньшему ArraySort(mas); ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код }
Errore: "'m' - conversione dei parametri non consentita e.mq5 2076 20"
È scritto nell'aiuto:
Nota
Il flag AS_SERIES non può essere impostato per gli array multidimensionali e per gli array statici (cioè, array la cui dimensione tra parentesi quadre è già specificata al momento della compilazione).
E cosa vi impedisce di ordinarlo con la funzione che suggerisco?
Il flag AS_SERIES non può essere impostato per gli array multidimensionali e gli array statici (cioè gli array la cui dimensione tra parentesi quadre è specificata in fase di compilazione).
Ma cosa vi impedisce di risolverlo con la funzione che vi suggerisco?
Esattamente lo stesso errore quando lo si passa nella funzione
Cosa succede se dopo l'ordinamento cambiate l'ordine di indicizzazione usando ArraySetAsSeries?
ArraySetAsSeries non si applica agli array multidimensionali.
Sì, non si applica. E chi sa cosa vale, risponda per favore.
Sì, non si applica. E chi sa cosa vale, risponda per favore.
A volte uso l'ordinamento a bolle su un array bidimensionale. Potete scegliere la direzione e la dimensione per cui ordinare
Venire a casa tua per il codice, o postarlo, se non ti dispiace)
Aggiunto: quanto consuma risorse, potrebbe anche invertire il ciclo, cosa che non voglio fare.
Vieni a casa tua per il codice, o pubblicalo se non ti dispiace)
Solo che non ricordo quale dimensione dell'array hai scritto - forse non ne hai bisogno, e mi spingo ...
//| Пузырьковая сортировка двумерного массива |
//+------------------------------------------------------------------+
template<typename T>
void ArraySortBubbleTwoDims(T& array[][TWO_DIM], int sort_dimension=0, int sort_direction=0) {
T t=0;
int k=ArrayRange(array,1); // Количество колонок
int n=ArrayRange(array,0); // Количество строк
//---
if(sort_dimension<0) sort_dimension=0;
if(sort_dimension>k) sort_dimension=k;
//---
for(int i=n-1; i>0; i--) {
for(int j=0; j<i; j++) {
//--- по возрастанию
if(sort_direction==0) {
if(array[j][sort_dimension]>array[j+1][sort_dimension]) {
for(int e=0; e<k; e++) {
t=array[j][e];
array[j][e]=array[j+1][e];
array[j+1][e]=t;
}
}
}
//--- по убыванию
else {
if(array[j][sort_dimension]<array[j+1][sort_dimension]) {
for(int e=0; e<k; e++) {
t=array[j][e];
array[j][e]=array[j+1][e];
array[j+1][e]=t;
}
}
}
}
}
}
//+------------------------------------------------------------------+
Beh, prendi una birra e vieni a trovarci ;)
Solo che non ricordo quale dimensione dell'array hai scritto - forse non ne hai bisogno, e lo metterò qui ...
È inverno, ma gli sci non vanno
{
double m[][3];
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
BySort(m); // передаём в функцию "BySort"
}
void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
ArraySort(mas);
ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код
}
Errore: "'m' - conversione dei parametri non consentita e.mq5 2076 20"
È inverno, ma gli sci non vanno
{
double m[][3];
if(условия)
{
// много кода
c++;
ArrayResize(m, c);
m[c-1][0]= Lots();
m[c-1][1]= Ticket();
m[c-1][2]= Profit();
}
BySort(m); // передаём в функцию "BySort"
}
void BySort(double &mas[][3])
{
// Сортируем по размеру лота от большего к меньшему
ArraySort(mas);
ArraySetAsSeries(mas,true); // при такой записи mql5 ругается, в mql4 работает
... здесь работа с уже сортированным массивом и основной код
}
Errore: "'m' - conversione dei parametri non consentita e.mq5 2076 20"
Nota
Il flag AS_SERIES non può essere impostato per gli array multidimensionali e per gli array statici (cioè, array la cui dimensione tra parentesi quadre è già specificata al momento della compilazione).
E cosa vi impedisce di ordinarlo con la funzione che suggerisco?
È scritto nell'aiuto:
Nota
Il flag AS_SERIES non può essere impostato per gli array multidimensionali e gli array statici (cioè gli array la cui dimensione tra parentesi quadre è specificata in fase di compilazione).
Ma cosa vi impedisce di risolverlo con la funzione che vi suggerisco?
Esattamente lo stesso errore quando si trasferisce a una funzione
Quale?
Al vostro"ArraySortBubbleTwoDims".
Comunque, ho ampliato il ciclo e il problema è risolto. Ma mi piacerebbe ancora vedere una soluzione normale sotto forma di una funzione standard