Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1921

 
Et, en fait, il est possible de combiner les cycles 1 et 2 en copiant uniquement les éléments non concordants du tableau I dans le tableau J.
[Supprimé]  
x572intraday éléments du tableau I:

La chaîne de touches est mise en évidence. Résultat :

Attendu :

ArrayJ est dynamique, il semble y avoir quelque chose qui cloche... Mais je n'ai pas besoin non plus d'une statique.

Ça m'a brisé l'esprit. QUOI DE NEUF ? Ou est-ce l'équivalent de la vieille chanson :

https://www.mql5.com/ru/forum/1111/page3141#comment_27152680

и

https://www.mql5.com/ru/forum/1111/page3142#comment_27371998

à propos des constantes nommées ?

Vous avez une boucle supplémentaire.

Voici la variante correcte :

void OnStart()
{
   int CommonArray[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 13, 13, 13, 13, 13, 13};
   int ArrayI[20]=   {0, 0, 0, 0, 0, 0, 0, 8, 9, 10,  0, 12, 13, 13, 13, 13,  0,  0, 13,  0};
   int ArrayJ[];

   for(int j=0; j<ArraySize(ArrayI); j++)
   {
      ArrayResize(ArrayJ,j+1);
      ArrayJ[j]=CommonArray[j];
   }

   ArrayPrint(ArrayI);
   ArrayPrint(ArrayJ);

        for( int i = ArraySize( ArrayI )-1; i >= 0; i-- ){
                if( ArrayI[i] > 0 && ArrayI[i] == ArrayJ[i] ){
                        ArrayRemove( ArrayJ, i, 1 );
                }
        }

   ArrayPrint( ArrayJ );
//---
}
 
EVGENII SHELIPOV #:

Ne te déchire pas, Alexandre.

Pourquoi Alexander ? Je suis Andrei.

"Ne vous déchirez pas" - clarifiez.

 
Koldun Zloy #:

Vous avez un cycle supplémentaire.

Voici la bonne option :

A propos de la boucle supplémentaire... Il peut être inapproprié ici mais il est nécessaire dans un grand code, il a donc été déplacé ici. Je n'ai pas les moyens de vérifier l'exactitude de l'algorithme pour le moment, mais formellement, il fonctionne comme prévu.

JRandomTrader, le résultat était surprenant : tous les zéros. Je vérifierai plus tard.

Merci à tous.

JRandomTrader
JRandomTrader
  • 2018.10.28
  • www.mql5.com
Профиль трейдера
 
int CommonArray[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 13, 13, 13, 13, 13, 13};
int ArrayI[20]=   {0, 0, 0, 0, 0, 0, 0, 8, 9, 10,  0, 12, 13, 13, 13, 13,  0,  0, 13,  0};
int ArrayJ[];

int CommonOffset=0; // или сколько надо

ArrayResize(ArrayJ,ArraySize(ArrayI));
int k=0;
for(int j=0; j<ArraySize(ArrayI); j++)
   if(ArrayI[j]!=CommonArray[j+CommonOffset])
      ArrayJ[k++]=CommonArray[j+CommonOffset];
ArrayResize(ArrayJ,k);

C'est comme ça.

Et les zéros sont ma faute, ils devraient être là :

int k=0; // объявляем до цикла - чтобы использовать после
for(int i=0; i<ArraySize(ArrayI); i++) // после предыдущего кода (1) размеры ArrayI и ArrayJ равны
  if(ArrayI[i]!=ArrayJ[i])
    {
     -ArrayJ[k++]=ArrayI[i];
     +ArrayJ[k++]=ArrayJ[i];
    }
ArrayResize(ArrayJ,k);


 
Tretyakov Rostyslav #:

Hey

 
Tretyakov Rostyslav #:

Chérie !

Vous utilisez les mauvaises informations.

 
Vitaly Muzichenko #:

Chérie !

Vous utilisez les mauvaises informations.

Lequel voulez-vous ?
 
Tretyakov Rostyslav #:
Lequel voulez-vous ?

L'autre

 
Tretyakov Rostyslav #:
Lequel est-ce ?

Vous êtes un programmeur, pas un chauffeur de taxi, vous devez rechercher la cause et non l'effet, et tout se mettra alors en place.