Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1921

 
Und tatsächlich ist es möglich, die Zyklen 1 und 2 zu kombinieren, indem man nur die nicht übereinstimmenden Elemente von ArrayI nach ArrayJ kopiert.
 
x572intraday Elemente von ArrayI haben:

Die Tastenfolge wird hervorgehoben. Ergebnis:

Erwartet:

ArrayJ ist dynamisch, es scheint etwas damit nicht zu stimmen... Aber ich brauche auch kein statisches Gerät.

Das hat mich umgehauen. WAS GIBT'S NEUES? Oder ist dies das Äquivalent zu dem alten Lied:

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

и

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

über benannte Konstanten?

Sie haben eine zusätzliche Schleife.

Hier ist die richtige Variante:

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

Zerreißen Sie sich nicht, Alexander.

Warum Alexander? Ich bin Andrej.

"Mach dich nicht kaputt" - klären.

 
Koldun Zloy #:

Sie haben einen zusätzlichen Zyklus.

Dies ist die richtige Option:

Über die zusätzliche Schleife... Es mag hier unpassend sein, aber es ist in einem großen Code notwendig, also wurde es hierher verschoben. Ich habe im Moment keine Ressourcen, um die Korrektheit des Algorithmus zu überprüfen, aber formal funktioniert er wie vorgesehen.

JRandomTrader, das Ergebnis war überraschend: alles Nullen. Ich werde das später noch einmal überprüfen.

Ich danke Ihnen allen.

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

Es ist folgendermaßen.

Und die Nullen sind meine Schuld, sie sollten da sein:

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

Hallo

 
Tretyakov Rostyslav #:

Oh je!

Sie verwenden die falschen Informationen.

 
Vitaly Muzichenko #:

Oh je!

Sie verwenden die falschen Informationen.

Welche wollen Sie?
 
Tretyakov Rostyslav #:
Welche wollen Sie?

Die andere

 
Tretyakov Rostyslav #:
Welches ist es?

Sie sind ein Programmierer, kein Taxifahrer, Sie müssen nach der Ursache suchen, nicht nach der Wirkung, dann wird sich alles von selbst ergeben.