Borrar una matriz de elementos definidos - página 6

 
TheXpert:
Uno tiene 42 productos, otro tiene 6, otro tiene 30. Me da miedo imaginarme lo gilipollas que hay dentro con preguntas y respuestas así
+1000500
 
Реter Konow:

Lo siento. Parece que hay que invertir las líneas:

¿Has probado a correr? Incluso sin una carrera, se puede decir que no es un problema para salir de la matriz al copiar.

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

El circo ya se ha ido.

 
Dmitry Fedoseev:

Tenemos que hacer las cosas bien.

Este es el punto principal,

necesitas el enfoque correcto (estrategia) para resolver el problema.

 
Dmitry Fedoseev:

El circo ya se ha ido.

¿Irse a dónde? ¿Como un circo?

No creo que se vaya a ninguna parte, y si lo hace, no será por mucho tiempo y volverá seguro).

 
Konstantin Nikitin:

¿Has probado a correr? Incluso sin una carrera, se puede decir que no será un problema para salir de la matriz al copiar.

Un momento. Comprobando mi solución. Sólo anotaba lo que me venía a la cabeza. Lo comprobaré.

 
//+------------------------------------------------------------------+
//|                                             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 solución elimina todos los triples, pero no elimina los dígitos del final, ya que estos dígitos deberían desaparecer cuando ArrayResize.

Es decir, los últimos dígitos, son los que no forman parte de la matriz modificada. Simplemente no hiceun ArrayResize

 
Реter Konow:

¿De qué hay que hablar?

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]);
Quizás como es más refinado manchar el foro de mierda.
 
Sergey Dzyublik:

¿De qué hay que hablar?

Tal vez como sería aún más refinado para manchar el foro de mierda.

¿Tiene una solución más rápida?

Hombre, cómo me gusta poner a la gente fijada en la forma y no en el contenido. Es un placer).

Razón de la queja: