Очистка массива от заданного (ых) элементов - страница 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.

Иначе говоря, последние цифры, - это те, что не входят в состав изменненого массива. Просто я не сделал АrrayResize

 
Ре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:

О чем тут можно разговаривать???

Возможно, как бы это еще более изысканнее обмазать форум гавнокодом.

У вас есть более быстрое решение?

Блин, как мне нравится уделывать людей зацикленных на форме, а не на содержании. Одно удовольствие.)))

Причина обращения: