Calcul d'un seul tableau pendant l'optimisation - page 8

 
forexman77:

C'est surtout sur les cours, qui sont une forêt obscure pour moi. Mais, certaines pensées ont surgi. Faites un tableau avec les dates et les nombres séparément. Seulement, comment obtenir le numéro d'index où se trouvent les dates après le tri, c'est-à-dire obtenir le i qui est dans la deuxième dimension ?

datetime m[215][1];
double d[215][2];

m[0][i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=f2;

J'ai fait ce qui suit :

datetime m1[215];
datetime m2[215];
double d[215][4];

m1[i]=Dat_DtTm;
m2[i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=0.0;
d[i][2]=f2;
d[i][3]=0.0;

ArraySort(m1,WHOLE_ARRAY,0,MODE_DESCEND);

for (int y=214;y>=0;y--)
   {
  
   for (int a=214;a>=0;a--)
   {
   if (m1[y]==m2[a])
   {
   d[y][1]=d[a][0];
   d[y][3]=d[a][2];
   Print("m1[y]=",m1[y],"d[y][1]=",d[y][1],"d[y][3]=",d[y][3],"y=",y);
   break;
   }
   }
   }
 
forexman77:

C'est surtout sur les cours, qui sont une forêt obscure pour moi. Mais, certaines pensées ont surgi. Faites un tableau avec les dates et les nombres séparément. Seulement, comment obtenir le numéro d'index où se trouvent les dates après le tri, c'est-à-dire obtenir le i qui est dans la deuxième dimension ?

datetime m[215][1];
double d[215][2];

m[0][i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=f2;

C'est beaucoup plus simple que ça. Supposons que nous ayons un tableau de dates, par exemple datetime m_date[4000] et beaucoup d'autres tableaux de tout type : int, string, double ... et de toute dimension.

Tous ces tableaux sont liés de telle sorte que les données de la i-ème ligne de ces tableaux correspondent à la date m_date[ i ]. Vous devez trier tous ces tableaux par date.

Soit m_dim le nombre de lignes dans ces tableaux (nombre de dates). Nous n'utiliserons pas ArrayResize comme une opération coûteuse, juste m_dim <= 4000, dans notre exemple.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
int m_index[ 4000, 2 ];

// Заполняем массив индексов:
for ( int i = 0; i < m_dim; i ++ )
{
   m_index[ i, 0 ] = m_date[ i ];
   m_index[ i, 1 ] = i;
}
// Сортируем индексный массив
ArraySort( m_index, m_dim, 0, MODE_DECEND);

// Все

Maintenant, dans la première dimension, nous prenons la date et dans la deuxième dimension, nous prenons l'index des tableaux correspondant à cette date.

 
Mislaid:

C'est beaucoup plus simple que ça. Supposons que nous ayons un tableau de dates, par exemple datetime m_date[4000] et un tas d'autres tableaux de n'importe quel type : int, string, double ... et de n'importe quelle dimension.

Tous ces tableaux sont liés de telle sorte que les données de la i-ème ligne de ces tableaux correspondent à la date m_date[ i ]. Vous devez trier tous ces tableaux par date.

Soit m_dim le nombre de lignes dans ces tableaux (nombre de dates). Nous n'utiliserons pas ArrayResize comme une opération coûteuse, juste m_dim <= 4000, dans notre exemple.

// Создаем индексный массив Все остальные массивы в первом измерении имеют ту же размерность
int m_index[ 4000, 2 ];

// Заполняем массив индексов:
for ( int i = 0; i < m_dim; i ++ )
{
   m_index[ i, 0 ] = m_date[ i ];
   m_index[ i, 1 ] = i;
}
// Сортируем индексный массив
ArraySort( m_index, m_dim, 0, MODE_DECEND);

// Все

Maintenant, dans la première dimension, nous prenons la date et dans la deuxième dimension, nous prenons l'index des tableaux correspondant à cette date.

Merci ! Je m'en servirai.