[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 436

 

ArrayTemp[100]は、すべての要素がinteger型で、1から100までの昇順にソートされています。

最初の1-50個の要素を削除して、配列のサイズを[50]にする必要があります。

配列の後半をテンポラリにコピーし、元のサイズを変更してから、テンポラリから元のサイズにコピーし直すという方法を考えてみました。

- もっと簡単な方法はないのでしょうか?

ありがとうございます。

 
chief2000:

ArrayTemp[100]は、すべての要素がinteger型で、1から100までの昇順にソートされています。

最初の1~50個の要素を削除して、配列のサイズを[50]にする必要があります。

配列の後半をテンポラリにコピーし、元のサイズを変更してから、テンポラリから元のサイズにコピーし直すという方法を考えてみました。

- もっと簡単な方法はないのでしょうか?

ありがとうございます。



降順にソートして、配列のサイズを 変更すればいいんです。そのほうが早いと思うんです。しかし、誰が知っていますか?)
 
Figar0:

降順にソートして、配列のサイズを変更すればいいんです。そのほうが早いと思うんです。しかし、誰が知っていますか?)

ありがとうございました。

 
Vinin:

初めの一歩が良かったですね、オルガ・アレクサンドロヴナさん。330行のコード


ごきげんよう。褒め言葉として受け止めるか、その逆かわかりませんが、いずれにせよ、回答ありがとうございました。

私は残念ながら、解決策を見つけることができない、私はそう考える理由です - 主なものは、品質とリテラシーであり、私が理解するように、それで、私はギャップを持って、コードが行かないので、それは。

私の質問に対する答えをとても待っています...。

 

できる人が助けるのが良い

以下は、時間経過後に令状を削除すべきコードで、このような条件です。

MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber

この条件を最初のif演算子に挿入すると、その中にある他の演算子はこの条件を考慮しないのはなぜですか?

つまり、このコードは機能せず、保留中の注文を すべて一度に削除してしまうのです。

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }

そして、このコードは動作し、注文を一度に削除することはありません。

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP && MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }
 

ブレイクポイントは何に使うのか、教えてください。フォーラムを検索してみたが、情報が見つからない。どのように使うのですか?

 
chief2000:

ArrayTemp[100]は、すべての要素がinteger型で、1から100までの昇順にソートされています。

最初の1-50個の要素を削除して、配列のサイズを[50]にする必要があります。

配列の後半をテンポラリにコピーし、元のサイズを変更してから、テンポラリから元のサイズにコピーし直すという方法を考えてみました。

何もせず、50番目の要素をスタート地点と考えることもできます。ArrayCopyは とにかく時間がかかる。
 
sss2019:

できる人が助けるのが良い

以下は、時間経過後に令状を削除すべきコードで、このような条件です。

この条件を最初のif演算子に挿入すると、その中にある他の演算子はこの条件を考慮しないのはなぜですか?

つまり、このコードは機能せず、保留中の注文をすべて一度に削除してしまうのです。

そして、このコードは動作し、注文を一度に削除することはありません。

一般的には、最後の1枚から順番に見ていくとよいでしょう。2つ目のケースでは、条件の中に括弧を つけることを恐れてはいけません。

 
fore-x:

ブレイクポイントは何に使うのか、教えてください。フォーラムを検索してみたが、情報が見つからない。どのように使用するのですか?

うまくいかないんです。ちゃんとしたデバッガになると思って作ったのに、そうならない。
 
splxgf:
何もせず、50番目の要素を初期と考えることもできます。ArrayCopyはいずれにせよ時間がかかります。

要は、定期的に配列に要素を入れる(拡張する)必要があり、最適化/テストのスピードに影響するのです。そのため、"良い "タイミングで初期状態に戻しています。

Figar0さんの 解決策 私のよりシンプルであることが判明し、うまくいきました。

ありがとうございました。