初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 241

 

プログラマーの皆さん、こんにちは。

forループで2つの数値を比較する方法を教えてください。

ループiの場合を除き、A==Bを求めるには何が必要でしょうか?

ループでは、2つの数値を比較するのはiだけ です 例えば、i == 1の 場合、 iと 等しい数値のA、Bのみを通過して比較します

与えられた数字を、サイクルiの場合を除き、すべて互いに試すようにしたい。どのようにコードで実装するのか、コード例を示していただけると助かります。

ありがとう ございます

а

#property copyright "."
#property link      ""
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
 
    for(int i=1; i<10; i++)
     {   
      double x=1.0;
      double y=0.5;
        
      double A = x*i;
      double B = y*i;
  
      Alert(" i = ",i,"     A = ",DoubleToStr(A,1),"     B = ",DoubleToStr(B,1));
      
      //КАК НАЙТИ СРАВНЕНИЕ ЧИСЕЛ А == В БЕЗ УЧЕТА i ?
   }
  }
//+------------------------------------------------------------------+
ファイル:
Test_1.mq4  2 kb
 

ループの中に輪を作る。 まず最初のAと10個のBのそれぞれを比較し、次に2番目のAを比較する、など。

 
Aleksei Stepanenko:

まず最初のAと10個のBのそれぞれを比較し、次に2番目のAを比較する、というようにループで循環させる。

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

9回?このサイクルでは9 A、そして9 B 。

Aを100回、Bを100回というサイクルで、それはもうAとBをそれぞれ100回ずつ......越えていくんです。悪夢です。

他に方法はないのか?

 

すべては、目の前の課題次第です。検索する必要が全くない場合もあります。例えば、いくつかの値があらかじめ配列に格納されている場合。

何が求められているのか、今までの例ではよくわかりません。何のための比較なのか、何を得たいのか。

 
Aleksei Stepanenko:
すべては、目の前の課題次第です。もしかしたら、検索する必要が全くないのかもしれません。例えば、いくつかの値があらかじめ配列に格納されている場合。

私はそれを理解するためにあまりにも古い問題を持っている配列でのみ考えてきました。しかし、例が示されていれば、どう応用すればいいのかが分かるかもしれない。2次元配列も考えたのですが、実装には至りませんでした。ループと同じように1次元配列でデータを出力する......。

もしかしたら、誰かがこれに出会って、解決策を共有しているかもしれないと思ったんだ。

 
Aleksei Stepanenko:

あなたの例からは、何が必要なのかまだよくわかりません。何のための比較なのか、何を得たいのか。

比較データをarrowオブジェクトの関数に入れると、iと一致する比較データだけを見ることができ、上に書いたようなことになります。
 

何かを提案するためには、問題を説明する必要があります。解決策ではなく、どう捉えるか、何を得たいのか。それから実装を考えればいいんです。

 
Aleksei Stepanenko:

何かを提案するためには、問題を説明する必要があります。解決策ではなく、どう捉えるか、何を得たいのか。そのうえで、実装を考えればいいのです。

Alekseiさん、ありがとうございます。最初のアドバイスを参考にさせていただき、すでに実行に移しました。コードを減らしたかったんだ、多すぎたんだ。プライベートではすでに「他に方法はない」と言われているので、簡単な解決策があると思ったのですが。

 
Aleksei Stepanenko:

何かを提案するためには、問題を説明する必要があります。解決策ではなく、どう捉えるか、何を得たいのか。そのうえで、実装を考えればいいのです。

考えたのですが、配列に2重のデータを格納することで可能なのでしょうか?私の知る限り、intは配列にしか入れられないのでは?

これなら何かできそうな気がする......。

А[100]={0,1,2,......99};
 

プログラミングでは、1つの解しかありえないということはまずありません。選択肢は必ずある。意味については何も言わないので、何とも言えませんね。

配列には、さまざまな種類のデータを格納することができます。

int a[];
double b[];
string c[];
char d[];