占用你时间的学校热身运动 - 页 7

 
Nikolai Semko:
是吗?
此刻不在电脑前。
我想我已经试过了。ME没有识别这个功能,也没有在F1的帮助中找到它。
我的理解是,它是一个AlgLib库

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

 
Aleksey Nikolayev:

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

是的。实施...

这是一个解放军,它应该是这样的。

1.在零数组时,返回由默认构造函数初始化的值(对于基元,它是0)。

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.在零数组时,它在运行时崩溃了。

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.返回一个包含结果代码和金额的结构

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;
}

该方法被称为 "随心所欲")))

我是用手写的,所以也许我在什么地方搞砸了。

 
Aleksey Nikolayev:
克莱默定理就在这本书 中(附录,第102页)。

谢谢你!事实证明,通过(复杂的)圆周率定理来证明是非常容易的。

 
Vladimir Simakov:

是的。实施...

这是一个解放军,它应该是这样的。

1.在零数组时,返回由默认构造函数初始化的值(对于基元,它是0)。

2.在零数组时,它在运行时崩溃了。

3.返回一个包含结果代码和金额的结构

该方法被称为 "随心所欲")))

我是用手写的,所以也许我在什么地方搞砸了。

嗯,写的是:"我们像在R中那样做,但速度更快",因为在C++中没有承诺。

 
Aleksey Nikolayev:

好吧,它被写成 "像在R中一样做,只是速度更快",就像C++中不承诺的那样。

弱的借口。

做为在R...我不知道,R并不在我的堆栈中。

除了,在用C++编写库时不使用模板(如果它看起来像C++,闻起来像C++,甚至有UB,那就说明了......)。- 不知不觉中...

 
Aleksey Nikolayev:

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

它在帮助中,但编译器没有看到它。
只有我吗?


我刚刚看到,你有

#include <Math\Stat\Math.mqh>

所以它一定是一个外部库。
再次,我不认为为了节省一行代码而用额外的库来加重你的程序负担有什么意义。

 
Nikolai Semko:


再一次,我不认为为了节省一行代码而给你的程序增加额外的库的负担有什么意义。

特殊情况下的程序是--是。关于MathSum的争论是微不足道的

在更重要的问题的背景下:上面注意到,这个解决方案只有在圆周的中心在图形内时才有效。

也就是说,我们需要另一个适用性的标准。"对于这个人,我们欢迎他得到结果,但对于这个人,我不能"。

现在这个话题与优化器的优化直接相关...

 
Maxim Kuznetsov:

特例的方案就在那里--它就在那里。关于MathSum的争论是微不足道的

在更重要的问题的背景下:上面注意到,这个解决方案只有在圆周的中心落在图中时才有效。

也就是说,我们需要另一个适用性的标准。"对于这个人你是欢迎的,但对于这个人我不能"。

现在这个话题与优化器的优化直接相关...

乍一看,只有确定R的方程式会发生变化。

1) 如果中心在里面:A1+A2+...+An=2*Pi
2) 如果中心在外面:A1-A2-...-An=0,其中A1是最长边的角度

因此,我们只需要确定如何区分这两种情况。

PS。一般来说,只要半径等于最大边的一半,你就需要计算角Ai的总和。如果它小于2*Pi,那么中心就在多边形之外,反之亦然。

 
Maxim Kuznetsov:

特例的方案就在那里--它就在那里。关于MathSum的争论是微不足道的

在更重要的问题的背景下:上面注意到,这个解决方案只有在圆周的中心落在图中时才有效。

也就是说,我们需要另一个适用性的标准。"对于这个人你是欢迎的,但对于这个人我不能"。

现在这个主题与优化器的优化直接相关...

为什么我不能这样做?
你只需要花时间,但为了什么目的--并不清楚。

我认为西马科夫已经做到了。的确,我没有理解。

好吧,我就用我的方式试试。为 了使一切在视觉上清晰。

 

附加的文件:
Zadacha3.mq5  9 kb