新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 143 1...136137138139140141142143144145146147148149150...1953 新评论 Artyom Trishkin 2017.03.07 07:50 #1421 fxsaber: 按原样运行。template <typename T>int Strange( const T &InArray[] ){ int Res = 1; T Array[]; const int Size = ArraySize(InArray); if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array)) { int Tmp = 1; ArrayPrint(Array); for (int i = 1; i < Size; i++) { if (Array[i - 1] != Array[i]) { if (Tmp > Res) Res = Tmp; Tmp = 0; } Tmp++; } } return(Res);}void OnStart(){ int Array[] = {1, 2, 3, 1, 2, 1, 2, 2}; Print(Strange(Array));} 它是有效的。这是他发出的东西。2017.03.07 14:42:44.141 1 1 1 2 2 2 2 32017.03.07 14:42:44.141 4上面一行是排序后的输入数组,下面一行是Strange()的结果。如果我们仔细观察排序后的数组,用颜色标记出匹配的数字,然后计算超过一个相同颜色的数字的数量,我们就可以得到结果。1 1 1 2 2 2 23 - 总计 ,你应该返回 2而该函数返回4。虽然--也有进步--对我来说,它总是返回1--如何如此--不明白。 fxsaber 2017.03.07 07:54 #1422 Artyom Trishkin:1 1 1 2 2 2 23 - 总的来说 ,它应该返回 2而该函数返回4。虽然--也有进步--对我来说,它总是返回1--如何如此--不明白。 你需要返回数字还是最频繁的元素?如果是第二种,那么template <typename T>int Strange( const T &InArray[] ){ int Res = 0; T Array[]; const int Size = ArraySize(InArray); if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array)) { int Max = 0; int Tmp = 0; ArrayPrint(Array); for (int i = 0; i < Size - 1; i++) { Tmp++; if ((Array[i] != Array[i + 1]) || (i == Size - 2)) { if (Tmp > Max) { Max = Tmp; Res = Array[i]; } Tmp = 0; } } } return(Res);}void OnStart(){ int Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}; Print(Strange(Array));} Any questions from newcomers MetaEditor build 1463 MetaEditor build 1463 Artyom Trishkin 2017.03.07 07:59 #1423 fxsaber: 你想退回数量还是最频繁的项目?不同拍摄的数量。你的函数返回什么?最高数量的比赛?这也是一个有用的东西... fxsaber 2017.03.07 08:02 #1424 Artyom Trishkin:不同拍摄的数量。你的表述很奇怪。"0, 0, 1, 1, 2, 2"- 3?你的函数返回什么?最高数量的比赛? 是的。 Artyom Trishkin 2017.03.07 08:06 #1425 fxsaber:你的表述很奇怪。"0, 0, 1, 1, 2, 2"- 3? 是的--三个不同数字的三个匹配。 fxsaber 2017.03.07 08:08 #1426 Artyom Trishkin: 是的--三个不同数字的三个匹配。template <typename T>int Strange( const T &InArray[] ){ int Res = 0; T Array[]; const int Size = ArraySize(InArray); if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array)) { int Tmp = 1; ArrayPrint(Array); for (int i = 1; i < Size; i++, Tmp++) if (Array[i - 1] != Array[i]) { if (Tmp > 1) Res++; Tmp = 0; } if (Tmp > 1) Res++; } return(Res);}void OnStart(){ int Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 3, 4, 4}; Print(Strange(Array));} Artyom Trishkin 2017.03.07 08:15 #1427 fxsaber: 那么,你想退回的是数字还是最频繁的项目?如果是后者,那么template <typename T>int Strange( const T &InArray[] ){ int Res = 0; T Array[]; const int Size = ArraySize(InArray); if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array)) { int Max = 0; int Tmp = 0; ArrayPrint(Array); for (int i = 0; i < Size - 1; i++) { Tmp++; if ((Array[i] != Array[i + 1]) || (i == Size - 2)) { if (Tmp > Max) { Max = Tmp; Res = Array[i]; } Tmp = 0; } } } return(Res);}void OnStart(){ int Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}; Print(Strange(Array));}酷。但有一点不同--这是一个模板功能,对吧。template <typename T> T Strange( const T &InArray[] ){ T Res = 0; T Array[]; const int Size = ArraySize(InArray); if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array)) { int Max = 0; int Tmp = 0; ArrayPrint(Array); for (int i = 0; i < Size - 1; i++) { Tmp++; if ((Array[i] != Array[i + 1]) || (i == Size - 2)) { if (Tmp > Max) { Max = Tmp; Res = Array[i]; } Tmp = 0; } } } return(Res);}void OnStart(){ double Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}; Print(Strange(Array));} Any questions from newcomers MetaEditor build 1463 MetaEditor build 1463 Artyom Trishkin 2017.03.07 08:52 #1428 fxsaber: template <typename T>int Strange( const T &InArray[] ){ int Res = 0; T Array[]; const int Size = ArraySize(InArray); if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array)) { int Tmp = 1; ArrayPrint(Array); for (int i = 1; i < Size; i++) { if (Array[i - 1] != Array[i]) { if (Tmp > 1) Res++; Tmp = 0; } Tmp++; } } return(Res);}void OnStart(){ int Array[] = {1, 2, 3, 1, 2, 1, 2, 2}; Print(Strange(Array));}这个人的回报是什么?如果你使阵列不同,那就不对了。template <typename T>int Strange( const T &InArray[] ){ int Res = 0; T Array[]; const int Size = ArraySize(InArray); if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array)) { int Tmp = 1; ArrayPrint(Array); for (int i = 1; i < Size; i++) { if (Array[i - 1] != Array[i]) { if (Tmp > 1) Res++; Tmp = 0; } Tmp++; } } return(Res);}void OnStart(){ int Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3}; Print(Strange(Array));}它返回。2017.03.07 15:48:26.985 1 1 1 1 1 1 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 32017.03.07 15:48:26.985 2它到底是在寻找数组中的匹配数字的数量吗?或者你做了一些不同的事情,而我要寻找一个错误。 Any questions from newcomers MetaEditor build 1463 [WARNING CLOSED!] Any newbie Vitaly Muzichenko 2017.03.07 08:57 #1429 我已经很困惑了)你有一个数组。Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};该函数最终应该返回什么,为什么?每个数字的匹配数量,或一个特定的最大数量,或...我是不是写了 什么,但一定是错的,而且是错的? fxsaber 2017.03.07 09:02 #1430 Artyom Trishkin:它到底是在寻找数组中的匹配数字的数量吗?或者你做了别的事情,而我在寻找一个错误。 你检查了旧的代码。仔细检查 一下。 1...136137138139140141142143144145146147148149150...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
按原样运行。
int Strange( const T &InArray[] )
{
int Res = 1;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Tmp = 1;
ArrayPrint(Array);
for (int i = 1; i < Size; i++)
{
if (Array[i - 1] != Array[i])
{
if (Tmp > Res)
Res = Tmp;
Tmp = 0;
}
Tmp++;
}
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 3, 1, 2, 1, 2, 2};
Print(Strange(Array));
}
这是他发出的东西。
2017.03.07 14:42:44.141 4
上面一行是排序后的输入数组,下面一行是Strange()的结果。
如果我们仔细观察排序后的数组,用颜色标记出匹配的数字,然后计算超过一个相同颜色的数字的数量,我们就可以得到结果。
1 1 1 2 2 2 23 - 总计 ,你应该返回 2
而该函数返回4。虽然--也有进步--对我来说,它总是返回1--如何如此--不明白。
1 1 1 2 2 2 23 - 总的来说 ,它应该返回 2
而该函数返回4。虽然--也有进步--对我来说,它总是返回1--如何如此--不明白。
int Strange( const T &InArray[] )
{
int Res = 0;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Max = 0;
int Tmp = 0;
ArrayPrint(Array);
for (int i = 0; i < Size - 1; i++)
{
Tmp++;
if ((Array[i] != Array[i + 1]) || (i == Size - 2))
{
if (Tmp > Max)
{
Max = Tmp;
Res = Array[i];
}
Tmp = 0;
}
}
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
Print(Strange(Array));
}
你想退回数量还是最频繁的项目?
不同拍摄的数量。
你的函数返回什么?最高数量的比赛?这也是一个有用的东西...
不同拍摄的数量。
你的表述很奇怪。"0, 0, 1, 1, 2, 2"- 3?
你的函数返回什么?最高数量的比赛?
你的表述很奇怪。"0, 0, 1, 1, 2, 2"- 3?
是的--三个不同数字的三个匹配。
int Strange( const T &InArray[] )
{
int Res = 0;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Tmp = 1;
ArrayPrint(Array);
for (int i = 1; i < Size; i++, Tmp++)
if (Array[i - 1] != Array[i])
{
if (Tmp > 1)
Res++;
Tmp = 0;
}
if (Tmp > 1)
Res++;
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 3, 4, 4};
Print(Strange(Array));
}
那么,你想退回的是数字还是最频繁的项目?如果是后者,那么
int Strange( const T &InArray[] )
{
int Res = 0;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Max = 0;
int Tmp = 0;
ArrayPrint(Array);
for (int i = 0; i < Size - 1; i++)
{
Tmp++;
if ((Array[i] != Array[i + 1]) || (i == Size - 2))
{
if (Tmp > Max)
{
Max = Tmp;
Res = Array[i];
}
Tmp = 0;
}
}
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
Print(Strange(Array));
}
酷。但有一点不同--这是一个模板功能,对吧。
T Strange( const T &InArray[] )
{
T Res = 0;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Max = 0;
int Tmp = 0;
ArrayPrint(Array);
for (int i = 0; i < Size - 1; i++)
{
Tmp++;
if ((Array[i] != Array[i + 1]) || (i == Size - 2))
{
if (Tmp > Max)
{
Max = Tmp;
Res = Array[i];
}
Tmp = 0;
}
}
}
return(Res);
}
void OnStart()
{
double Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
Print(Strange(Array));
}
int Strange( const T &InArray[] )
{
int Res = 0;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Tmp = 1;
ArrayPrint(Array);
for (int i = 1; i < Size; i++)
{
if (Array[i - 1] != Array[i])
{
if (Tmp > 1)
Res++;
Tmp = 0;
}
Tmp++;
}
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 3, 1, 2, 1, 2, 2};
Print(Strange(Array));
}
这个人的回报是什么?
如果你使阵列不同,那就不对了。
int Strange( const T &InArray[] )
{
int Res = 0;
T Array[];
const int Size = ArraySize(InArray);
if ((ArrayCopy(Array, InArray) == Size) && ArraySort(Array))
{
int Tmp = 1;
ArrayPrint(Array);
for (int i = 1; i < Size; i++)
{
if (Array[i - 1] != Array[i])
{
if (Tmp > 1)
Res++;
Tmp = 0;
}
Tmp++;
}
}
return(Res);
}
void OnStart()
{
int Array[] = {1, 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3};
Print(Strange(Array));
}
它返回。
2017.03.07 15:48:26.985 2
它到底是在寻找数组中的匹配数字的数量吗?或者你做了一些不同的事情,而我要寻找一个错误。
我已经很困惑了)
你有一个数组。
该函数最终应该返回什么,为什么?每个数字的匹配数量,或一个特定的最大数量,或...我是不是写了 什么,但一定是错的,而且是错的?
它到底是在寻找数组中的匹配数字的数量吗?或者你做了别的事情,而我在寻找一个错误。