Cancellare un array di elementi definiti - pagina 6

 
TheXpert:
Uno ha 42 prodotti, uno ha 6, uno ha 30. Ho paura di immaginare che stronzo ci sia dentro con domande e risposte del genere
+1000500
 
Реter Konow:

Mi dispiace. Sembra che le linee debbano essere invertite:

Hai provato a correre? Anche senza una corsa, si può dire che non è un problema uscire dall'array quando si copia.

if(deleted)Arr[a1] = Arr[a1 + deleted];
 
Sergey Chalyshev:
+1000500

Il circo è già partito.

 
Dmitry Fedoseev:

Dobbiamo mettere a posto le basi.

Questo è il punto principale,

è necessario il giusto approccio (strategia) per risolvere il problema.

 
Dmitry Fedoseev:

Il circo è già partito.

Andato dove? Come un circo?

Non credo che vada da nessuna parte, e se lo fa, non sarà per molto tempo e tornerà di sicuro).

 
Konstantin Nikitin:

Hai provato a correre? Anche senza una corsa, si può dire che non sarà un problema uscire dall'array durante la copia.

Solo un secondo. Controllo della mia soluzione. Sto solo annotando quello che mi è venuto in mente. Lo controllerò.

 
//+------------------------------------------------------------------+
//|                                             Erase and Resize.mq5 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link      "https://www.mql5.com"
#property version   "1.00"
//--------------------------------------------------------------------
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int Arr[20] = {1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2};
   ulong q1 = GetMicrosecondCount(); 
   //--------------------------------
   int deleted = 0,q = 0;
   //-------------- 
   for(int a1 = 0; a1 < ArraySize(Arr); a1++)
     {
      if(deleted)Arr[q] = Arr[q + deleted];
      if(Arr[q] == 3){deleted++; q--;}
      q++;
     }
   //--------------
   ulong q2 = GetMicrosecondCount(); 
   //--------------------------------
   //ArrayResize(Arr, ArraySize(Arr) - deleted);    
   //--------------------------------
   Print(Arr[0],",",Arr[1],",",Arr[2],",",Arr[3],",",Arr[4],",",Arr[5],",",Arr[6],",",Arr[7],",",Arr[8],",",Arr[9],
        ",",Arr[10],",",Arr[11],",",Arr[12],",",Arr[13],",",Arr[14],",",Arr[15],",",Arr[16],",",Arr[17],",",Arr[18],",",Arr[19]);
   Print("Array new size  ",ArraySize(Arr),"  Тime of operation  ",q2-q1,"  deleted  ",deleted);
   //--------------------------------  
  }
//+------------------------------------------------------------------+
2018.11.13 13:49:15.813 Erase and Resize (USDJPY,H1)    Array new size  20  Тime of operation  1  deleted  6
2018.11.13 13:49:15.813 Erase and Resize (USDJPY,H1)    1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,1,2,3,1,2  <--------------последние шесть цифр остались неизмененными, потому что не сделал АrrayResize;
Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • www.mql5.com
Ask questions on technical analysis, discuss trading systems and improve your MQL5 programming skills to develop your own trading strategies. Communicate and share your experience with traders from anywhere in the world, answer questions and help beginners — MQL5.community is developing along with you. How to avoid opening of new order Hello...
 

La soluzione rimuove tutte le triple, ma non rimuove le cifre alla fine, perché queste cifre dovrebbero scomparire quando ArrayResize.

In altre parole, le ultime cifre sono quelle che non fanno parte dell'array modificato. Solo che non ho fattoun ArrayResize

 
Реter Konow:

Cosa c'è da dire?

Print(Arr[0],",",Arr[1],",",Arr[2],",",Arr[3],",",Arr[4],",",Arr[5],",",Arr[6],",",Arr[7],",",Arr[8],",",Arr[9],
        ",",Arr[10],",",Arr[11],",",Arr[12],",",Arr[13],",",Arr[14],",",Arr[15],",",Arr[16],",",Arr[17],",",Arr[18],",",Arr[19]);
Forse come è ancora più raffinato per imbrattare il forum con shitcod.
 
Sergey Dzyublik:

Cosa c'è da dire?

Forse come sarebbe ancora più raffinato per imbrattare il forum con la merda.

Avete una soluzione più rapida?

Amico, quanto mi piace mettere giù le persone fissate sulla forma piuttosto che sul contenuto. È un piacere).

Motivazione: