//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+enum EResult {Ok,AllocError};
template<typename T>
EResult GetRepeat(const T &arr[],T &ret[],uint count)
{
int size=ArraySize(arr); // Присваиваем переменной количество элементов массива arrif(ArrayResize(ret,size)!=size)
return AllocError;// Устанавливаем новый размер массиву ret, равный sizeint ii=0;
for(int i=0; i<size;)
{
T tmp=arr[i]; // переменная перегруженной функции с значениями массива arruint repeatCount=1; // будем считать одинаковые подряд значения массива arrwhile(++i<size&&arr[i]==tmp) // если следующее значение то же
++repeatCount; // плюсуем repeatCountif(repeatCount>=count)
ret[ii++]=tmp;
}
returnArrayResize(ret,ii)==ii?Ok:AllocError;// новый размер массива ret
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnStart()
{
int si=0;
int arr[]= {1,2,4,4,4,4,4,4,7,55,55,7,7,7,7,79,77,66,66,2,2,2,2,2};
int ret[];
if(!GetRepeat(arr,ret,cou))
si=ArraySize(ret);
for(int i=0; i<si; i++)
Print(si," ret[i] =",ret[i]);
}
//+------------------------------------------------------------------+
IsTestingの代わりにIsVisualModeを使用するのがよいでしょう。
IsVisualModeなし、IsTestingなしでも可能です。
質問は他のことだった
magic=rand() について
地元の居酒屋が「Yobtv」と叫ばないのが不思議なくらい...。
ここでプログラミングを勉強しているのだから、fackupにどれくらい時間がかかるか調べてみてください。現実的な条件下で、魔法の複製を手に入れるチャンスはどのくらいあるのだろうか? そして、そのようなレーキを踏む価値はあるのだろうか?
これも可能です。マッチングする可能性は低い。
一致するかどうかのチェックも別途あるので、OKドックです。
magic=rand() について
地元の居酒屋が「Yobtv」と叫ばなかったのが不思議なくらい...。
ここでプログラミングを勉強しているのだから、fackupにどれくらい時間がかかるか調べてみてください。現実的な条件下で、魔法の複製を手に入れるチャンスはどのくらいあるのだろうか? そして、そのような熊手を踏む価値はあるのだろうか?
参考文献より
"GetTickCount() は OS起動時からインクリメントしており、49日間は繰り返さないので、繰り返さないシーケンスを得るには、MathSrand(GetTickCount) を使用します。"
した
現地の専門家が「Yobtv」と大合唱しなかったのは不思議だ......。
説得もせず、議論もせず、学ばせる...自分で解決させる
magic=rand() について
地元では「ヨブテッブ」と大合唱にならなかったのが不思議なくらいです。
///
ダック、何回目?
ああ、うまくいった、ありがとう...あぁ、今、このボタンだけで、1ティックごとに150の注文を止めずに開けている...。した
これを行う
スクリプトはこのスレッドからです。
このセリフは理解できない。
if(!GetRepeat(arr,ret,cou))
なぜ「!」なのか?なぜ列挙型が 選ばれるのですか?
なぜこのようなことをするのかわかりませんが、本来はブーリアン関数なのです。
作者はこんなことを考えたのだろう。
enumの場合、要素は0から始まる:Ok=0, AllocError=1
つまり、GetRepeatは0か1のどちらかを返す。
で、cpの場合は0が偽、1が真です。
それぞれGetRepeatは戻り値の否定です
自分の頭や人の頭を混乱させないというのは、とても簡単なことなんです。