Isınmak ve zaman ayırmak için okul sorunu - sayfa 7

 
Nikolai Semko :
Bu mu?
Şimdi bilgisayar başında değil.
Denedim gibi. ME bu işlevi tanımadı ve F1'in yardımında bulamadı
Bunun AlgLib kitaplığı olduğunu anlıyorum

https://www.mql5.com/ru/docs/standardlibrary/mathematics/stat/mathsubfunctions/statmathsum

 
Aleksey Nikolayev :

https://www.mql5.com/ru/docs/standardlibrary/mathematics/stat/mathsubfunctions/statmathsum

Mdya. uygulama...

Bu Liba, şöyle bir şey olmalı:

1. Boş bir diziyle, varsayılan kurucu tarafından başlatılan değeri döndürür (ilkeller için bu 0'dır)

 template < typename T>
T MathSum( const T &arr[]){
   T sum=T();
   for ( int i= 0 ,size= ArraySize (arr);i<size;sum+=arr[i++]);
   return sum;
}

2. Sıfır dizi ile çalışma zamanında çöküyor

 template < typename T>
T MathSum( const T &arr[]){
   T sum=arr[ 0 ];
   for ( int i= 1 ,size= ArraySize (arr);i<size;sum+=arr[i++]);
   return sum;
}

3. İşin sonucunun kodunu ve miktarını içeren bir yapı döndürür

 template < typename T>
struct SRet{
   int retCode; //0 - Ок, -1 - Not initialized
   T res;
   SRet():retCode(- 1 ){}
   SRet( uint code, const T &_res):retCode(code),res(_res){}
   SRet(const SRet<T> &other) {this=other;}
   bool operator !() const { return retCode!= 0 ;}
};

template < typename T>
SRet<T> MathSum( const T &arr[]){
   int size= ArraySize (arr);
   if (!size) return SRet<T>();
   SRet<T> ret(0,arr[ 0 ]);
   for ( int i= 1 ,size= ArraySize (arr);i<size;ret.res+=arr[i++]);
   return ret;
}

Ne denir, neyi daha çok seversin)))

Dizinin üzerine yazdı, böylece bir yerde bir pervazı mahvedebilirdi.

 
Aleksey Nikolayev :
Cramer teoremi hakkında bu kitapta yer almaktadır (Ek, s. 102).

teşekkür etmek! (zor) daire teoremi ile kanıtlanması çok kolay olduğu ortaya çıkıyor.

 
Vladimir Simakov :

Mdya. uygulama...

Bu Liba, şöyle bir şey olmalı:

1. Boş bir diziyle, varsayılan kurucu tarafından başlatılan değeri döndürür (ilkeller için bu 0'dır)

2. Sıfır dizi ile çalışma zamanında çöküyor

3. İşin sonucunun kodunu ve miktarını içeren bir yapı döndürür

Ne denir, neyi daha çok seversin)))

Dizinin üzerine yazdı, böylece bir yerde bir pervazı mahvedebilirdi.

Eh, yazıldı: "R'deki gibi yapıyoruz, sadece daha hızlı", çünkü C ++'da söz verilmedi.

 
Aleksey Nikolayev :

Eh, yazıldı: "R'deki gibi yapıyoruz, sadece daha hızlı", çünkü C ++'da söz verilmedi.

Zayıf bahane.

R'deki gibi yap... Bilmiyorum, R yığınımda değil.

Bu sadece, C++'da bir kitaplık yazarken şablon kullanmamak (C++ gibi görünüyorsa, C++ gibi kokuyorsa ve hatta UB'leri varsa, o zaman sizi düşündürür ...) - bu bir şekilde ...

 
Aleksey Nikolayev :

https://www.mql5.com/ru/docs/standardlibrary/mathematics/stat/mathsubfunctions/statmathsum

Yardımdadır, ancak derleyici onu görmez.
Bu sadece ben miyim?


Tehdit, sahip olduklarınızı az önce gördü

 #include <Math\Stat\Math.mqh>

hepsi aynı harici İncil anlamına gelir.
Bir kez daha, bir satır kod kaydetmek için programıma ek kitaplıklar eklemenin bir anlamı görmüyorum.

 
Nikolai Semko :


Bir kez daha, bir satır kod kaydetmek için programıma ek kitaplıklar eklemenin bir anlamı görmüyorum.

belirli bir durum için program - is. MathSum ile ilgili klişeler alakasız

daha önemli bir problemin arka planına karşı: Yukarıda, bu çözümün yalnızca çevrelenmiş dairenin merkezi şeklin içine düştüğünde işe yaradığını fark ettik.

Yani, başka bir uygulanabilirlik kriterine ihtiyacımız var. "Bunun için burada - sonuca yazık, ama böyle bir no-shmogo için"

şimdi konu doğrudan optimize edici tarafından yapılan optimizasyonla ilgili ...

 
Maxim Kuznetsov :

belirli bir durum için program - is. MathSum ile ilgili klişeler alakasız

daha önemli bir problemin arka planına karşı: Yukarıda, bu çözümün yalnızca çevrelenmiş dairenin merkezi şeklin içine düştüğünde işe yaradığını fark ettik.

Yani, başka bir uygulanabilirlik kriterine ihtiyacımız var. "Bunun için burada - sonuca yazık, ama böyle bir no-shmogo için"

şimdi konu doğrudan optimize edici tarafından yapılan optimizasyonla ilgili ...

İlk bakışta, yalnızca R'yi belirleme denklemi değişecektir.

1) Merkez içeride ise: A1+A2+...+An=2*Pi
2) Merkezin dışarıda olması durumunda: A1-A2-...-An=0, burada A1 en uzun kenarın açısıdır.

Bu nedenle, yalnızca bu iki durumun nasıl ayırt edileceğini belirlemek gerekir.

not. Genel olarak, yarıçapın maksimum kenarın yarısına eşit olması koşuluyla, Ai açılarının toplamını hesaplamanız gerekir. 2 * Pi'den küçükse, merkez çokgenin dışındadır ve bunun tersi de geçerlidir.

 
Maxim Kuznetsov :

belirli bir durum için program - is. MathSum ile ilgili klişeler alakasız

daha önemli bir problemin arka planına karşı: Yukarıda, bu çözümün yalnızca çevrelenmiş dairenin merkezi şeklin içine düştüğünde işe yaradığını fark ettik.

Yani, başka bir uygulanabilirlik kriterine ihtiyacımız var. "Bunun için burada - sonuca yazık, ama böyle bir no-shmogo için"

şimdi konu doğrudan optimize edici tarafından yapılan optimizasyonla ilgili ...

Peki, neden yapamam.
Sadece zaman harcamanız gerekiyor, ama ne için - belli değil.

Yani Simakov'un zaten yaptığı gibi. Doğru, anlamadım.

tamam, kendi yöntemimle deneyeceğim. Her şeyi görsel olarak görmek için.

 

Dosyalar:
Zadacha3.mq5  9 kb