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

 

こんにちは。

ヒントをいただけないでしょうか......。

Indic_mas[]//main array

Indic_mas_copi[]// メイン配列のコピー先となる配列。

n //Indic_mas_copi[]の要素数

1. Indic_mas_copi[n]=0 というエントリは、配列の全要素を ゼロにしたことを意味するのでしょうか?

2.ある操作を行った後、配列Indic_mas_copi[]の一部の要素の値が変更されました。

次の反復では、Indic_mas[]をIndic_mas_copi[]にコピーすることが繰り返される。

Indic_mas_copi[]は、このコピーの前にゼロにする(または空にする)必要がありますか?

それとも、Indic_mas[]の要素が自動的に以前のIndic_mas_copi[]の要素を置き換えるのでしょうか?

 
LOA:

こんにちは。

ヒントをいただけないでしょうか......。

Indic_mas[]//main array

Indic_mas_copi[]// メイン配列のコピー先となる配列。

n //Indic_mas_copi[]の要素数

1. Indic_mas_copi[n]=0 というエントリは、配列の全要素をゼロにしたことを意味するのでしょうか?

2.ある操作を行った後、配列Indic_mas_copi[]の一部の要素の値が変更されました。

次の反復では、Indic_mas[]をIndic_mas_copi[]にコピーすることが繰り返される。

Indic_mas_copi[]は、このコピーの前にゼロにする(または空にする)必要がありますか?

それとも、Indic_mas[]要素が自動的に以前のIndic_mas_copi[]要素を置き換えるのでしょうか?


1.Indic_mas_copi[]の要素数をnとすると、このエントリで配列の外に出てしまうので、Indic_mas_copi[n]と書くのは正しくありません。アレイのセル番号は0から始まることを忘れないでください。したがって,アドレス指定できる配列の最後のセルの番号は,n-1です。

2.は入れ替わります。これをスクリプトで確認する。

 
drknn:


1.Indic_mas_copi[]の要素数をnとすると、このエントリで配列の外に出てしまうので、Indic_mas_copi[n]と書くのは正しくありません。アレイのセル番号は0から始まることを忘れないでください。そのため、最後にアドレス指定される配列セルの番号はn-1となります。

2.補欠が出る。スクリプトで確認する。


ウラジミールさん、ありがとうございました。

では、配列の要素を ゼロにするには、次のようにすればよいのでしょうか。

double i;
for (i=n-1;i>=0;i--)Indic_mas_copi[i]=0; 
 
LOA:


ウラジミールさん、どうもありがとうございました。

では、配列の要素をゼロにするには、次のようにすればよいのでしょうか。


いや~、複雑すぎますね。もっと簡単な方法があります。

intArrayInitialize() double &array[], double value).
数値配列の全要素を同じ値に設定します。初期化された要素の数を返す。

配列の名前を括弧で囲んで指定し、第2引数に0を指定します。これにより、配列の全要素が ゼロになります。

 
LOA:


ウラジミールさん、どうもありがとうございました。

では、配列の要素をゼロにするには、次のようにすればよいのでしょうか。

ArrayInitialize(Array_Name,0)。
 
О...ウラジミールに先を越された...。:)
 
artmedia70:
ArrayInitialize(Array_Name,0)。

この方が良い: https://docs.mql4.com/ru/array/ArrayInitialize- 具体的なコード例がある
 
drknn:


いや~、これは複雑すぎますね。もっと簡単な方法があります。

intArrayInitialize() double &array[], double value).
数値配列の全要素を同じ値に設定します。初期化された要素の数を返す。

配列名を括弧で囲んで指定し、第2引数に0を指定する。その結果、配列の全要素がゼロになる。


ありがとうございます。その方が本当に楽なんです。

そうすると、ループは、いくつかの要素をゼロにする必要がある状況で使うことができるのですね。

あるいは、1つの要素を通してと言うことです。

 
LOA:

こんにちは。

ヒントをいただけないでしょうか......。

Indic_mas[]//main array

Indic_mas_copi[]// メイン配列のコピー先となる配列。

n //Indic_mas_copi[]の要素数

1. Indic_mas_copi[n]=0 というエントリは、配列の全要素をゼロにしたことを意味するのでしょうか?

2.ある操作を行った後、配列Indic_mas_copi[]の一部の要素の値が変更されました。

次の反復では、Indic_mas[]をIndic_mas_copi[]にコピーすることが繰り返される。

Indic_mas_copi[]は、このコピーの前にゼロにする(または空にする)必要がありますか?

それとも、Indic_mas[]要素が自動的に以前のIndic_mas_copi[]要素に置き換わるのでしょうか?

いいえ、その必要はありません。 Indic_mas_copi[] すべての要素は、メインの Indic_mas[] 配列からコピーされた要素に置き換えられます。
 
LOA:


ありがとうございます。その方が本当にシンプルでいいんです。

そうすると、ループは、一部の要素をゼロにする必要があるような状況で使えるのでしょうか?

あるいは、1つの要素を通してと言うことです。


ループは、いくつかの要素をゼロにしたり、再初期化したりするときに使用します...一方、ループは、それらをひとつひとつ通過していく。したがって,ループの内部で,配列の必要なセルをソートするルールを導入することができます.例えば、負の数を選別して2倍にすればいいのです。そこで、ループ内に次のように記述することにします。

配列の現在のセルの値が0より小さい場合、配列のそのセルの値に2を掛けた値を取る。それ以外の場合は継続

追伸

if(massiv[i]<0){
  massiv[i]=massiv[i]*2;
}
else{
  continue;
}
しかし、プロセッサの観点からは、2倍する必要があることが事前に分かっている場合は、乗算よりも加算を適用した方がCPUの処理時間が短くなるのです。