Verilen eleman(lar)ın bir dizisini temizleme - sayfa 6

 
TheXpert :
Birinde 42 ürün, diğerinde 6, üçüncüde 30 ürün var. Böyle soru ve cevaplarla içinde ne olduğunu hayal etmeye korkuyorum.
+1000500
 
Реter Konow :

Afedersiniz. Görünüşe göre satırların değiştirilmesi gerekiyor:

koşmayı denedin mi Koşmadan bile kopyalama yaparken diziden fırlamanın sorun olmayacağını söyleyebiliriz.

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

sirk çoktan gitti

 
Dmitry Fedoseev :

Temel sorunla başa çıkmak gerekir.

İşte ana nokta

sorunu çözmek için doğru (strateji) yaklaşıma ihtiyaç duyar.

 
Dmitry Fedoseev :

sirk çoktan gitti

Nereye gittin? Büyük bir üst gibi mi?

Bence buradan hiçbir yere gitmeyecek ve ayrılırsa da uzun sürmeyecek ve kesinlikle geri dönecek)

 
Konstantin Nikitin :

koşmayı denedin mi Koşmadan bile kopyalama yaparken diziden fırlamanın sorun olmayacağını söyleyebiliriz.

Bana bir saniye ver. Çözümümü kontrol ediyorum. Sadece aklıma gelenleri not ettim. Şimdi kontrol edeceğim.

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

Çözüm, tüm üçlüleri kaldırır, ancak sondaki sayıları kaldırmaz, çünkü bu sayılar ArrayResize olduğunda kaybolmalıdır.

Başka bir deyişle, son rakamlar, değiştirilen dizinin parçası olmayanlardır. Ben sadece ArrayResize yapmadım

 
Реter Konow :

konuşacak ne var???

 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 ]);
Belki de forumu boktan kodlarla kirletmek daha nasıl zarif olurdu.
 
Sergey Dzyublik :

konuşacak ne var???

Belki de forumu boktan kodlarla kirletmek daha nasıl zarif olurdu.

Daha hızlı bir çözümünüz var mı?

Kahretsin, içeriğe değil biçime takıntılı insanlarla uğraşmayı ne kadar seviyorum. Saf zevk.)))