[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 22

 

みんな、助けてくれ!

                      if(OPrazH<razH && OPrazH>0)              
                        {
                         f1=1;                                 
                         xDelH[countDH][0]=High[j];            
                         xDelH[countDH][1]=Time[j];
                         Print(xDelH[countDH][0]);
                         countDH++;
                         break;
                        }

このコードを書いているところです(これはスニペットです)。すべての変数と配列がセットされ、カウンターはカウントされます。初期値はcountDH=0です。しかし、xDelH配列には何も書き込まれないという問題があります。Print (High[j], Time[j], countDH) は正しい結果を返しますが、xDelH[countDH][0] は常に 0 を返します。また、配列サイズによる チェックも 0 を返します。

xDelH[countDH][0]=0.01; と書いても、0が出ます。何をやっても、このコードをどこに置いても、うまくいきません。

それは何のためでしょうか?その理由は何でしょうか。よろしくお願いします。

 
WindSW:

みんな、助けてくれ!

私はこのコードを書いています(これは断片的なものです)、すべての変数と配列が設定され、カウンタがカウントされます。しかし、xDelH配列に問題があり、何も書き込まれません。Print (High[j], Time[j], countDH) は正しい結果を返しますが、 xDelH[countDH][0] はいつも 0 を返します。その理由は何でしょうか。よろしくお願いします。

xDelH[countDH][0]=0.01と書いても、0が出ます。

xDelHがdouble型であるかどうかを確認する。これは、もしのための内部です。ブレーク演算 子の位置がなぜか間違っている。下のようにすると、どうなるのでしょうか?

double xDelH [1][1];
int countDH=0;

xDelH[countDH][0]=0.01; // точка а не запятая
Print(DoubleToStr(xDelH[countDH][0],2));
 
WindSW:

みんな、助けてくれ!

このコードを書いているところです(これはスニペットです)。すべての変数と配列がセットされ、カウンターはカウントされます。初期値はcountDH=0です。しかし、xDelH配列には何も書き込まれないという問題があります。Print (High[j], Time[j], countDH) は正しい結果を返しますが、xDelH[countDH][0] は常に 0 を返します。また、配列サイズによるチェックも 0 を返します。

xDelH[countDH][0]=0.01; と書いても、0が出ます。何をやっても、このコードをどこに置いても、うまくいきません。

それは何のためでしょうか?その理由は何でしょうか。よろしくお願いします。

また、配列 xDelH[][]のサイズが 宣言されていないことも原因として考えられます。
 
double xDelH[][2];が2つのforにあり、そのうちの1つはjを通過しています。あなたが書いたコードは動作します - 0.01を表示します。
 
WindSW:
double xDelH[][2];が2つのforにあり、そのうちの1つはjを通過しています。あなたが書いたコードは動作します - 0.01を出力します。

あなたのバージョンでは、0次元の配列のサイズは 指定されて いませんが、上の例では指定されています。

double xDelH [1][1];
 

ありがとうございました。すべてうまくいっている。以下のようにサイズを選択した。ArrayResize(xDelH,100)。

もう一つ質問なのですが、例えば配列が100セルすべてを埋め尽くし、countDHが120までカウントする場合、配列のサイズは自動的に120まで増えるのでしょうか、それとも別の方法で定期的に配列のサイズを 変更しなければならないのでしょうか?

 
WindSW:

ありがとうございました。すべてうまくいっている。以下のようにサイズを選択した。ArrayResize(xDelH,100)。

もう一つ質問なのですが、例えば配列が100個のセルをすべて埋め尽くし、countDHが120までカウントする場合、配列のサイズは自動的に120まで増えるのでしょうか、それとも別の方法で定期的に配列のサイズを変更しなければならないのでしょうか?

自動的に行われることはありません。必要であれば

ArrayResize (xDelH, countDH + 1);
 
TarasBY:

自動的に行われることはありません。必要であれば


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

また、より多くのセルを一度に設定することも可能です(例)。1000を超えないことが分かっている場合は1000。forの内部で配列を埋める場合、同じforの中で最大反復回数を定義し、forの前に配列のサイズを 変更することができます、例.

double xDelH[][2];

int N=120;
ArrayResize(xDelH, N);

for (int i=0; i<=N; i++)
{
// ...
}
 
paladin80:

また、より多くのセルを一度に設定することも可能です(例)。1000を超えないことが分かっている場合は1000。もし、forの中で配列を埋めるなら、同じforの中で最大反復回数を定義し、forの前に配列のサイズを変更することができます、例えば...。


私のコードでは、ArrayRangeで 反復回数を定義する方が便利です。

なぜかというと、xDelH[countDH][0]=HBar[countH][0]と書くと、0が出るからです(HBar[countH][0]はすでに埋まっていてそれ自身の値を持っているのに、です)。全くできないのでしょうか?