定義された要素の配列をクリアする。 - ページ 18 1...111213141516171819202122232425...30 新しいコメント Konstantin Nikitin 2018.11.16 11:52 #171 Vladimir Pastushak: わかったんだ、構造全体じゃなくて、構造中のフィールドシフトだったんだ...。構造が単純なタイプであれば、うまくいくはずです。 Реter Konow 2018.11.16 11:59 #172 もうひとつのニュアンス。私のアルゴリズムが正しく動作することを証明しました。関数を実行した後に得られた値をプリントアウトしてみました。他のアルゴリズムがどの程度有効なのかは謎です。 チェックサムは正しいことが証明されているようですが。 Nikolai Semko 2018.11.16 12:01 #173 Реter Konow:ZS.私の解答に従って関数を書くとき、ひとつだけ間違いがありましたね。 私の機能は а でも、とにかくありがとう。 いいえ、私は間違えていません、あなたの間違いを訂正したのです。よく考えて、自分の線はどうなっているのか? 試しに変えてみればわかるはずです。チェックサムもサイズも間違っていることになります。 Stanislav Dray 2018.11.16 12:09 #174 Реter Konow: ZS.私の解答に従って関数を書くとき、ひとつだけ間違いがありましたね。 私の機能は а と同じです。 Реter Konow 2018.11.16 12:09 #175 Nikolai Semko: いいえ、私は間違えていません、あなたの間違いを訂正したのです。よく考えてみてください、あなたのラインは何をしているのか?何もしないから、変えてみればわかるよ。チェックサムもサイズも間違っていることになります。結果はまったく同じです。エラーはありません。 そう、何もしないのです。でも、それがあればもっと意味があるんです。)) Реter Konow 2018.11.16 12:10 #176 Stanislav Dray:に相当します。はい。 Nikolai Semko 2018.11.16 12:22 #177 Реter Konow:はい。そうそう、ごめんね。 と思い出した。 あなたのコードはここから 引用されました。 あなたのセリフはなかったし、ちゃんと動作させるために追加したあのセリフも覚えていますよ。 タグコノウ。でも、それがあればもっと意味があるんです。)) 余計な数学演算が入ってる)) Реter Konow 2018.11.16 12:23 #178 質問です。なぜこのコードでは、配列のサイズを変更 した後、変更前と同じように印刷されるのでしょうか?//+------------------------------------------------------------------+ //| Erase and Resize.mq5 | //| Peter Konow | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Peter Konow" #property link "https://www.mql5.com" #property version "1.00" //-------------------------------------------------------------------- //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { int Arr[20] = {1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2}; ulong q1 = GetMicrosecondCount(); //-------------------------------- PeterArray(Arr,3); //-------------------------------- ulong q2 = GetMicrosecondCount(); //-------------------------------- Print("Array new size ",ArraySize(Arr)," Тime of operation ",q2-q1); ArrayPrint(Arr); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int PeterArray(int &Arr[],int val) // вариант Peter Konow { int deleted=0,q=0; for(int a1=0; a1<ArraySize(Arr); a1++) { if(deleted)Arr[q]=Arr[q+deleted]; if(Arr[q]==val){deleted++; q--;} q++; } ArrayResize(Arr,ArraySize(Arr) - deleted); return (q); } //+------------------------------------------------------------------+これはチェックサムチェックアルゴリズムの妥当性を問うものである。つまり、チェックサムを計算するときに、以前の要素を保持したまま配列の中をループするのですね。私流にアルゴリズムを確認することをお勧めします。20個の値からなる配列を出力することで これは、スピードではなく、正しさのチェックになります。 Nikolai Semko 2018.11.16 12:31 #179 Реter Konow:質問です。なぜこのコードでは、配列のサイズを変更した後、変更前と同じように印刷されるのでしょうか? これはチェックサムチェックアルゴリズムの妥当性を問うものである。つまり、チェックサムを計算するときに、以前の要素を保持したまま配列の中をループするのですね。 私流にアルゴリズムを確認することをお勧めします。20個の値からなる配列を出力することで これは、スピードではなく、正しさのテストになります。 テストでは100万人いるので、100万人を提案します。みんなで座って比べてみよう)) Реter Konow 2018.11.16 12:41 #180 Nikolai Semko: テストでは100万人なので、100万人を提案します。すべて座らせて比較する)))。チェックサムが正しく計算されていない。 自分で確認する配列の削除された部分に残っている要素を数えます. //+------------------------------------------------------------------+ //| Erase and Resize.mq5 | //| Peter Konow | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Peter Konow" #property link "https://www.mql5.com" #property version "1.00" //-------------------------------------------------------------------- //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { int Arr[20] = {1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2}; ulong q1 = GetMicrosecondCount(); //-------------------------------- PeterArray(Arr,3); //-------------------------------- ulong q2 = GetMicrosecondCount(); //-------------------------------- Print("Array new size ",ArraySize(Arr)," Тime of operation ",q2-q1," Контрольная сумма: ",ControlSumm(Arr)); ArrayPrint(Arr); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ int PeterArray(int &Arr[],int val) // вариант Peter Konow { int deleted=0,q=0; for(int a1=0; a1<ArraySize(Arr); a1++) { if(deleted)Arr[q]=Arr[q+deleted]; if(Arr[q]==val){deleted++; q--;} q++; } ArrayResize(Arr,ArraySize(Arr) - deleted); return (q); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ long ControlSumm(int &a[]) // суммирование всех элементов массива (контрольная сумма) { long sum=0; for(int i=0; i<ArraySize(a); i++) sum+=a[i]; return sum; } //+------------------------------------------------------------------+ もちろん、まだチェックが間違っているという証拠にはならないが、すでに疑いの余地はある。 チェックサムは、その行の要素から計算される。 2018.11.16 14:36:28.456 Erase and Resize (USDJPY,H1) 1 2 1 2 1 2 1 2 1 2 1 2 1 2 3 1 2 3 1 2 そして、最後の6つの要素は、以前ArrayResizeによって 削除されたものです。 しかし、この機能では、いずれにしてもカウントされます。 1...111213141516171819202122232425...30 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
わかったんだ、構造全体じゃなくて、構造中のフィールドシフトだったんだ...。
構造が単純なタイプであれば、うまくいくはずです。
もうひとつのニュアンス。私のアルゴリズムが正しく動作することを証明しました。関数を実行した後に得られた値をプリントアウトしてみました。他のアルゴリズムがどの程度有効なのかは謎です。
チェックサムは正しいことが証明されているようですが。
ZS.私の解答に従って関数を書くとき、ひとつだけ間違いがありましたね。
私の機能は
а
でも、とにかくありがとう。
ZS.私の解答に従って関数を書くとき、ひとつだけ間違いがありましたね。
私の機能は
а
と同じです。
いいえ、私は間違えていません、あなたの間違いを訂正したのです。よく考えてみてください、あなたのラインは何をしているのか?何もしないから、変えてみればわかるよ。チェックサムもサイズも間違っていることになります。
結果はまったく同じです。エラーはありません。
そう、何もしないのです。でも、それがあればもっと意味があるんです。))
に相当します。
はい。
はい。
そうそう、ごめんね。
と思い出した。
あなたのコードはここから 引用されました。
あなたのセリフはなかったし、ちゃんと動作させるために追加したあのセリフも覚えていますよ。
でも、それがあればもっと意味があるんです。))
余計な数学演算が入ってる))
質問です。なぜこのコードでは、配列のサイズを変更 した後、変更前と同じように印刷されるのでしょうか?
これはチェックサムチェックアルゴリズムの妥当性を問うものである。つまり、チェックサムを計算するときに、以前の要素を保持したまま配列の中をループするのですね。
私流にアルゴリズムを確認することをお勧めします。20個の値からなる配列を出力することで
これは、スピードではなく、正しさのチェックになります。質問です。なぜこのコードでは、配列のサイズを変更した後、変更前と同じように印刷されるのでしょうか?
これはチェックサムチェックアルゴリズムの妥当性を問うものである。つまり、チェックサムを計算するときに、以前の要素を保持したまま配列の中をループするのですね。
私流にアルゴリズムを確認することをお勧めします。20個の値からなる配列を出力することで
これは、スピードではなく、正しさのテストになります。テストでは100万人なので、100万人を提案します。すべて座らせて比較する)))。
チェックサムが正しく計算されていない。
自分で確認する配列の削除された部分に残っている要素を数えます.
もちろん、まだチェックが間違っているという証拠にはならないが、すでに疑いの余地はある。
チェックサムは、その行の要素から計算される。
そして、最後の6つの要素は、以前ArrayResizeによって 削除されたものです。
しかし、この機能では、いずれにしてもカウントされます。