清除一个定义元素的数组 - 页 6

 
TheXpert:
一个有42种产品,一个有6种,一个有30种。我不敢想象这样的问题和答案,里面有一个怎样的混蛋。
+1000500
 
Реter Konow:

对不起。看起来线条需要颠倒过来。

你尝试过跑步吗?即使没有运行,你也可以看出,复制时走出阵列 不是问题。

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

马戏团已经离开了。

 
Dmitry Fedoseev:

我们必须做好基本的工作。

这是最主要的一点。

你需要正确的(战略)方法来解决这个问题。

 
Dmitry Fedoseev:

马戏团已经离开了。

去了哪里?像一个马戏团?

我不认为他要去哪里,如果他要去,也不会太久,他肯定会回来的)。

 
Konstantin Nikitin:

你尝试过跑步吗?即使没有运行,你也可以知道,在复制时走出阵列 不会有问题。

请稍等。检查我的解决方案。只是记下了我脑海中出现的东西。我去看看。

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

该方案删除了所有的三倍体,但没有删除末尾的数字,因为这些数字在ArrayResize 时应该消失。

换句话说,最后的数字,是不属于修改后的数组的数字。我只是没有做ArrayResize

 
Реter Konow:

有什么好谈的呢?

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]);
也许,用屎壳郎抹黑论坛,怎么就更文雅了呢。
 
Sergey Dzyublik:

有什么好谈的呢?

也许,用屎壳郎抹黑论坛,怎么会更文雅呢。

你有更快的解决方案吗?

伙计,我多么喜欢把那些固定在形式上而不是内容上的人放下。这是我的荣幸)。