Bir diziden bir eleman nasıl kaldırılır (tek boyutlu iki boyutlu)?

 
Diziden eleman nasıl kaldırılır? Bunun için içinde depolanan öğelerin sayısını bilmem gerekir mi?
 

Böyle bir işlev var, kimse görmese de (ne yardımda ne de sitede), ama öyle)


 
Ilya Malev :

Böyle bir işlev var, kimse görmese de (ne yardımda ne de sitede), ama öyle)

oh, gizli işlev ve nasıl çalışıyor?
 
Ilya Malev :

Böyle bir işlev var, kimse görmese de (ne yardımda ne de sitede), ama öyle)


yakında gelecek

 

Tek bir elemanı kaldırmak için bu işlev oldukça uygundur.

 void OnStart ()
{
 double array[];
 CopyOpen ( _Symbol , PERIOD_CURRENT , 0 , 6 , array);
 ArrayPrint (array);
 dellArrayElement( 3 , array);
 ArrayPrint (array);
} /*******************************************************************/

void dellArrayElement( int shift, double &arr[])
{
 int arrSize = ArraySize (arr);
 if (shift > arrSize)
   return ;
 if (shift < arrSize)
 ArrayCopy (arr, arr, shift, shift+ 1 );
 ArrayResize (arr, arrSize- 1 );
}

Sonuç

 2018.12 . 22 09 : 55 : 06.206 ! 00 (EURUSD,M15)         1.13588 1.13607 1.13588 1.13612 1.13586 1.13614
2018.12 . 22 09 : 55 : 06.206 ! 00 (EURUSD,M15)         1.13588 1.13607 1.13588 1.13586 1.13614

Ardından, yürütme gerçeğini kontrol edebilmeniz için bu işlevi bağımsız olarak bool türüne dönüştürebilirsiniz. Ama prensipte eller eğri değilse ve ona hangi değerleri göndereceğinizi kontrol edebiliyorsanız yine de kullanabilirsiniz...

Statik dizilerin boyutunun küçültülemeyeceğini unutmayın.

 
Alexey Viktorov :

Tek bir öğeyi kaldırmak için bu işlev oldukça uygundur

Sonuç

Ardından, yürütme gerçeğini kontrol edebilmeniz için bu işlevi bağımsız olarak bool türüne dönüştürebilirsiniz. Ama prensipte eller eğri değilse ve ona hangi değerleri göndereceğinizi kontrol edebiliyorsanız yine de kullanabilirsiniz...

Statik dizilerin boyutunun küçültülemeyeceğini unutmayın.

Bir arkadaş diyor ki: tek boyutlu ve iki boyutlu . 2D ile işleviniz çalışmıyor. Aynı isimli bir fonksiyonun her iki konu ile de nasıl çalışacağını göster :)

 
Alexey Viktorov :

Statik dizilerin boyutunun küçültülemeyeceğini unutmayın.

Dizinin boyutunu küçültmüyorum ama ondan bir eleman çıkarıyorum, bunlar farklı şeyler. Anladığım kadarıyla, 1.13612 değeri işlevinizden kaldırılmış, dellArrayElement( 3 , array); satırında belirtilmiş. dizi yani 3. eleman diziden kaldırıldı, doğru anladım mı? Bu tür deneylerin programı yoğun bir şekilde yükleme hızı nedir?

 
Aleksey Semenov :
oh, gizli işlev ve nasıl çalışıyor?

C++ da böyle fonksiyonlar var, kütüphaneye bağlanıyorsunuz ve bu işlem yapılıyor. Ama mql'de böyle bir fonksiyonun olmadığını ve el yazısı fonksiyonları kullanmak istediğimi hesaba katar.

 

Bunu http://kvodo.ru/urok-7-2-massivyi-osnovnyie-operatsii.html (ve ayrıca bu https://purecodecpp.com/archives/1935 ) buldum

n öğeden oluşan X dizisinden, m -inci öğeyi sayıya göre çıkarmak gerekli olsun . Bunun için m elemanı yerine ( m + 1 )-th elemanı , ( m + 1)-th yerine ( m + 2 )-th, ( yerine n - 1 yazmak yeterlidir. n-2) ve bu diziyle daha fazla çalışırken n-1 öğelerini kullanın:

cout<< "\n m=" ; cin>>m; //ввод номера элемента, подлежащего удалению
for (i=m; i<n- 1 ; X[i+ 1 ],i++); //удаление m-го элемента
for (i= 0 ; i<n- 1 ; i++) cout<<X[i]<< "\t" ; //вывод измененного массива
n--; //уменьшение количества элементов в массиве

Ama bu c++ ile. Ancak burada dizide depolanan öğelerin sayısını bilmeniz gerekir. Elemanları yazıldığı gibi sayacak bir fonksiyon yazmak gerekiyor.

 
Alexey Viktorov :

Tek bir öğeyi kaldırmak için bu işlev oldukça uygundur

Ve diziden örneğin bir fiyat değeri değil, bir tarih çıkarmanız gerekirse, CopyOpen yardımdan tarihlerle çalışır mı, bu işlevin fiyatlar ile çalıştığı bana netleşti mi?

 
Ilya Malev :

Böyle bir işlev var, kimse görmese de (ne yardımda ne de sitede), ama öyle)


işlev nasıl çalışır

 int ArrayRemove()

Kılavuzda bununla ilgili bir açıklama yok, nereden okuyabilirim?