Hatalar, hatalar, sorular - sayfa 2467

 
Igor Makanu :

bir kez daha iki boyutlu bir dizi için bir sınıf sarmalayıcı yapmaya çalıştım, ne kadar uğraşırsam uğraşayım, normal bir iki boyutlu dizi olarak erişmek için [] aşırı yüklemek mümkün değildi arr[1][2]

4-5 yıl önce bu sorun çözüldü, hazır çözümleri olan ayrı bir şube vardı.
Aktif katılımcılardan çok azı bu güne kadar hayatta kaldı, çoğunlukla yasaklandılar ...

PS, sınıflarda iki boyutlu değil, üç veya daha fazla boyutlu bir dizi vardı.

 
Ah, sanırım o konuyu buldum https://www.mql5.com/en/forum/6729
В MQL5 всегда есть место подвигу ! ;)
В MQL5 всегда есть место подвигу ! ;)
  • 2012.05.16
  • www.mql5.com
Общее обсуждение: В MQL5 всегда есть место подвигу ! ;)
 
Sergey Dzyublik :

Bu sorun 4-5 yıl önce çözüldü, hazır çözümleri olan ayrı bir şube vardı.
Aktif katılımcılardan çok azı bu güne kadar hayatta kaldı, çoğunlukla yasaklandılar ...

PS, sınıflarda iki boyutlu değil, üç veya daha fazla boyutlu bir dizi vardı.

Sonuçta, gittim, bu konuya baktım - yasaklanmış veya silinmiş tek bir hesap yok. O daldaki tüm insanlar sağlıklıdır ve sağlıklıdır.

Yönetime atarak böyle bir skandal çıkarmaya mı karar verdin? Bu aptalca. Etrafında kötülük görmeyi bırak.

 
Sergey Dzyublik :
Ah, sanırım o konuyu buldum https://www.mql5.com/en/forum/6729

Bu konuyu geçen ay okumuştum sanırım akşam tekrar bakarım

ancak [][] aşırı yüklemesi ile yaptığım deneyler, [][] aşırı yükü kullanılarak MQL veya L-değerinde veya R-değerinde bir şeyin uygulanabileceğinin anlaşılmasıyla sona erdi.

dinamik iki boyutlu bir diziyle çalışmak için hazır bir çözümünüz varsa - onu CodeBase'e koyun, bu yararlı bir şey - aradım ve MT dağıtımından CMatrixDouble'dan daha iyi bir şey bulamadım: #include Math Alglib

 
class A{
public :
   uchar data1;
};

A func(){
   A a;
   a.data1 = 1 ;
   return a;       //object of 'A' cannot be returned, copy constructor 'A::A(const A &)' not found
}


void OnStart (){  
   A a;

   //1
   A aa = a;
   a = aa;
   
   //2
   a = func();   
}

//1 ve //2 arasındaki fark nedir?
Ne yazık ki, şablonları rastgele bir veri türüne sahip kaplarda kullanırken bu sorunu aşmanın bir yolu yoktur.

Özel durumlarda, sorunu çözmek için kalıtımı uygulayabilir, mirasçı için temel sınıf için bir kopya kurucu tanımlayabilir ve sorun işlevindeki dönüş türünü tabandan mirasçıya değiştirebilirsiniz.

 
Geliştiriciler:
Lütfen dizi için Kapasitesini döndüren bir işlev ekleyin (bellek alanının ayrıldığı öğe sayısı). ArrayResize rezerv parametresiyle karıştırılmamalıdır.
Dize için StringBufferLen vardır, ancak dizi için hiçbir şey yoktur.
 

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

Sergey Dzyublik , 2019.05.22 16:01

Kodu sağladığı için TheXpert'e tekrar teşekkürler.
ArrayResize kapasite МТ5(build 2057) için aşağıdaki sonuçlara sahibiz:


Sonuç:
 2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TEST_ArrayCapacity:TEST_ArrayCapacity
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 100 , 0 ): 100
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 100 , 100 ): 100
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 101 , 100 ): 201
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 200 , 100 ): 201
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 201 , 100 ): 201
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 202 , 100 ): 302
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 100 , 1 ): 302
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 100 , 400 ): 302
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 300 , 400 ): 302
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 301 , 600 ): 302
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 302 , 600 ): 302
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 303 , 600 ): 903
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 100 , 0 ): 903
2019.05 . 22 17 : 00 : 50.249 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 100 , 100 ): 903
2019.05 . 22 17 : 00 : 50.250 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 100 ,- 1 ): 100
2019.05 . 22 17 : 00 : 50.250 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 100 , 100 ): 100
2019.05 . 22 17 : 00 : 50.250 Test_array_resize (EURUSD,H1)   TestArrayCapacity(store, 105 , 100 ): 205

 

İyi akşamlar!

Herkes neler olduğunu önerebilir mi?

Bununla ilk kez karşılaşıyorum. Fonksiyonlardan birinde basit kod.

 double yyy= 28 / 50 * 100 ;
   
Print ( "test yyy=" , yyy);

Sonuç:

"2019.05.21 19:38:29.364 2019.04.01 00:05:00 testi yyy=0.0"


 
Michael2K :

İyi akşamlar!

Herkes neler olduğunu önerebilir mi?

int(28) / int(50) * int(100) == int(0) * int(100) == int(0) == çift(0.0)


Çift türü belirtmek için bir nokta kullanın:

 double yyy= 28. / 50 * 100 ;
 
Sergey Dzyublik :
Lütfen ayrıca ArrayResize'da Reserve_size parametresini kullanırken sözde kod sağlayın.
Sonraki ArrayResize'da yeni bir Reserve_size değeri belirtilirken sistemin davranışı hiçbir yerde açıklanmaz.
Sergey Dzyublik :


Sırayla çağrıldığında aşağıdaki varsayım doğru mudur:

Bir keresinde bu konuya sözde kod vermişler, bak. Hatırladığım kadarıyla orada kapasite ancak dizi boyutu bu kapasiteyi aştığında artıyor. Her ne kadar, elbette, işler değişebilir.

Ve kapasite değerini elde etme işlevi gerçekten çok gerekli.