Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 732

 
Vitalie Postolache :
Peki ya sıralamadan sonra indeksleme sırasını ArraySetAsSeries kullanarak değiştirirsek?
ArraySetAsSeries, çok boyutlu diziler için geçerli değildir.
 
Alexey Viktorov :
ArraySetAsSeries, çok boyutlu diziler için geçerli değildir.

Evet, geçerli değil. Ve kim ne kullanıldığını biliyor, lütfen cevaplayın.

 
Vitaly Muzichenko :

Evet, geçerli değil. Ve kim ne kullanıldığını biliyor, lütfen cevaplayın.

Bazen kabarcık türünde iki boyutlu bir dizi kullanırım. Sıralamanın yönünü ve boyutunu seçebilirsiniz
 
Artyom Trishkin :
Bazen kabarcık türünde iki boyutlu bir dizi kullanırım. Sıralamanın yönünü ve boyutunu seçebilirsiniz

Kod için eve gelmek ya da sakıncası yoksa yine de düzenlemek)

Eklendi: Ne kadar kaynak yoğun?

 
Vitaly Muzichenko :
Kod için eve gelmek ya da sakıncası yoksa yine de düzenlemek)
Öyleyse bir bira al, ama ziyaret et ;)

Sadece dizinin hangi boyutu hakkında yazdığını hatırlamıyorum - belki buna ihtiyacın yok, ama buraya iteceğim ...

//+------------------------------------------------------------------+
//| Пузырьковая сортировка двумерного массива                        |
//+------------------------------------------------------------------+
template < typename T>
void ArraySortBubbleTwoDims(T& array[][TWO_DIM], int sort_dimension= 0 , int sort_direction= 0 ) {
   T     t= 0 ;
   int    k= ArrayRange (array, 1 );     // Количество колонок
   int    n= ArrayRange (array, 0 );     // Количество строк
  
   //---
   if (sort_dimension< 0 ) sort_dimension= 0 ;
   if (sort_dimension>k) sort_dimension=k;
   //---
   for ( int i=n- 1 ; i> 0 ; i--) {
       for ( int j= 0 ; j<i; j++) {
         //--- по возрастанию
         if (sort_direction== 0 ) {
             if (array[j][sort_dimension]>array[j+ 1 ][sort_dimension]) {
               for ( int e= 0 ; e<k; e++) {
                  t=array[j][e];
                  array[j][e]=array[j+ 1 ][e];
                  array[j+ 1 ][e]=t;
                  }
               }
            }
         //--- по убыванию
         else {
             if (array[j][sort_dimension]<array[j+ 1 ][sort_dimension]) {
               for ( int e= 0 ; e<k; e++) {
                  t=array[j][e];
                  array[j][e]=array[j+ 1 ][e];
                  array[j+ 1 ][e]=t;
                  }
               }
            }
         }
      }
}
//+------------------------------------------------------------------+
Onu zuladan çıkardı ama çabucak bir şablona dönüştürdü. Belki acelem vardı...
 
Artyom Trishkin :
Öyleyse bir bira al, ama ziyaret et ;)

Sadece dizinin hangi boyutu hakkında yazdığını hatırlamıyorum - belki buna ihtiyacın yok, ama buraya iteceğim ...

Kış görünüyor, ama kayaklar gitmiyor

void Func()
{
double m[][ 3 ];

if (условия)
  {
   // много кода
         c++;
         ArrayResize (m, c);
         m[c- 1 ][ 0 ]= Lots();
         m[c- 1 ][ 1 ]= Ticket();
         m[c- 1 ][ 2 ]= Profit();
  }
BySort(m); // передаём в функцию "BySort"
}

void BySort( double &mas[][ 3 ])
{
// Сортируем по размеру лота от большего к меньшему
   ArraySort (mas);
   ArraySetAsSeries (mas, true ); // при такой записи mql5 ругается, в mql4 работает

... здесь работа с уже сортированным массивом и основной код
}

Bir hata veriyor: "'m' - parametre dönüştürmeye izin verilmiyor e.mq5 2076 20"

 
Vitaly Muzichenko :

Kış görünüyor, ama kayaklar gitmiyor

void Func()
{
double m[][ 3 ];

if (условия)
  {
   // много кода
         c++;
         ArrayResize (m, c);
         m[c- 1 ][ 0 ]= Lots();
         m[c- 1 ][ 1 ]= Ticket();
         m[c- 1 ][ 2 ]= Profit();
  }
BySort(m); // передаём в функцию "BySort"
}

void BySort( double &mas[][ 3 ])
{
// Сортируем по размеру лота от большего к меньшему
   ArraySort (mas);
   ArraySetAsSeries (mas, true ); // при такой записи mql5 ругается, в mql4 работает

... здесь работа с уже сортированным массивом и основной код
}

Bir hata veriyor: "'m' - parametre dönüştürmeye izin verilmiyor e.mq5 2076 20"

Yani kılavuz diyor ki:

Not

AS_SERIES bayrağı, çok boyutlu diziler ve statik diziler (yani, boyutu derleme zamanında köşeli parantez içinde belirtilen diziler) için ayarlanamaz.

Ve önerdiğim işlevle sıralamayı engelleyen nedir?

 
Artyom Trishkin :
Yani kılavuz diyor ki:

Not

AS_SERIES bayrağı, çok boyutlu diziler ve statik diziler (yani, boyutu derleme zamanında köşeli parantez içinde belirtilen diziler) için ayarlanamaz.

Ve önerdiğim işlevle sıralamayı engelleyen nedir?

Bir işleve geçerken tam olarak aynı hata
 
Vitaly Muzichenko :
Bir işleve geçerken tam olarak aynı hata
Hangisinde?
 
Artyom Trishkin :
Hangisinde?

" ArraySortBubbleTwoDims "inize

Genel olarak, döngü açıldı ve sorun çözüldü. Ama yine de standart bir fonksiyon şeklinde normal bir çözüm görmek istedim.