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()の結果です。並べ替えられた配列をよく見て、一致するものに色で印をつけ、同じ色の数字が2つ以上ある数を数えると、結果が得られる。1 1 1 2 2 2 3- 合計で 、 2 を返すべきでした。そして、その関数は4を返した。しかし - また、進歩 - 私と一緒に、それは常に1を返しました - どのようにそう - 理解していませんでした。 fxsaber 2017.03.07 07:54 #1422 Artyom Trishkin:1 1 1 2 2 2 3- 合計で 2が 返されるはずです。そして、その関数は4を返した。しかし - また、進歩 - 私と一緒に、それは常に1を返しました - どのようにそう - 理解していませんでした。 番号を返す必要があるのか、それとも最も頻度の高い要素を返す必要があるのか?もし、2番目なら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));} 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? そうです。3種類の数字が3つ揃ったのです。 fxsaber 2017.03.07 08:08 #1426 Artyom Trishkin: そうです。3種類の数字が3つ揃ったのです。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));} 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 ビルド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千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? 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()の結果です。
並べ替えられた配列をよく見て、一致するものに色で印をつけ、同じ色の数字が2つ以上ある数を数えると、結果が得られる。
1 1 1 2 2 2 3- 合計で 、 2 を返すべきでした。
そして、その関数は4を返した。しかし - また、進歩 - 私と一緒に、それは常に1を返しました - どのようにそう - 理解していませんでした。
1 1 1 2 2 2 3- 合計で 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?
そうです。3種類の数字が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
正確には、配列の中の一致する数字の数を探しているのでしょうか?それとも違うことをしたのか、エラーを探す![](https://c.mql5.com/3/120/pardon__1.gif)
もう、わけがわからないよ(笑)
配列があるんですね。
この関数は最終的に何を返すべきなのか、またその理由は?各数字のマッチング数、または特定の最大数、または....何か書いたが、間違っているに違いない、間違っているのだろうか?
正確には、配列の中の一致する数字の数を探しているのでしょうか?それとも何か別のことをしたのか、エラーを探します。