Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1921

 
E, infatti, è possibile combinare i cicli 1 e 2 copiando solo gli elementi non corrispondenti da ArrayI in ArrayJ.
 
x572intraday elementi di ArrayI:

La stringa di tasti è evidenziata. Risultato:

Previsto:

ArrayJ è dinamico, sembra che ci sia qualcosa che non va... Ma non ho nemmeno bisogno di uno statico.

Mi ha spezzato il cuore. COSA C'È? O è l'equivalente della vecchia canzone:

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

и

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

sulle costanti nominate?

Hai un ciclo in più.

Ecco la variante corretta:

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 #:

Non ti lacerare, Alexander.

Perché Alexander? Io sono Andrei.

"Non strapparti" - chiarire.

 
Koldun Zloy #:

Hai un ciclo in più.

Questa è l'opzione giusta:

A proposito dell'anello extra... Può essere inappropriato qui, ma è necessario in un grande codice, quindi è stato spostato qui. Non ho risorse per controllare la correttezza dell'algoritmo al momento, ma formalmente funziona come previsto.

JRandomTrader, il risultato è stato sorprendente: tutti zeri. Ricontrollerò più tardi.

Grazie a tutti.

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);

È così.

E gli zeri sono colpa mia, dovrebbero essere 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 #:

Ehi

 
Tretyakov Rostyslav #:

Caro!

State usando le informazioni sbagliate.

 
Vitaly Muzichenko #:

Caro!

State usando le informazioni sbagliate.

Quale vuoi?
 
Tretyakov Rostyslav #:
Quale vuoi?

L'altro

 
Tretyakov Rostyslav #:
Qual è?

Sei un programmatore, non un tassista, devi cercare la causa, non l'effetto, poi tutto andrà a posto.