Limpar um conjunto de elementos definidos - página 6

 
TheXpert:
Um tem 42 produtos, um tem 6, um tem 30. Tenho medo de imaginar que idiota há lá dentro com perguntas e respostas como essas
+1000500
 
Реter Konow:

Desculpe. Parece que as linhas precisam ser invertidas:

Você já tentou uma corrida? Mesmo sem uma corrida, você pode dizer que não é um problema sair da matriz ao copiar.

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

O circo já partiu.

 
Dmitry Fedoseev:

Você tem que acertar o básico.

Este é o ponto principal,

você precisa da abordagem (estratégia) correta para resolver o problema.

 
Dmitry Fedoseev:

O circo já partiu.

Foi para onde? Como um circo?

Acho que ele não vai a lugar algum, e se for, não será por muito tempo e ele estará de volta com certeza).

 
Konstantin Nikitin:

Você já tentou uma corrida? Mesmo sem uma corrida, você pode dizer que não será um problema sair da matriz ao copiar.

Só um segundo. Verificando minha solução. Apenas anotando o que me veio à cabeça. Vou dar uma olhada.

 
//+------------------------------------------------------------------+
//|                                             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...
 

A solução remove todos os triplos, mas não remove os dígitos no final, porque estes dígitos devem desaparecer quando o ArrayResize.

Em outras palavras, os últimos dígitos, são os que não fazem parte da matriz modificada. Eu simplesmente não fizum ArrayResize

 
Реter Konow:

Sobre o que há para falar?

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]);
Talvez seja ainda mais refinado difamar o fórum com o shitcod.
 
Sergey Dzyublik:

Sobre o que há para falar?

Talvez fosse ainda mais refinado difamar o fórum com o shitcod.

Você tem uma solução mais rápida?

Cara, como eu adoro colocar pessoas fixadas na forma e não no conteúdo. É um prazer).