数値を配列に格納したいのですがうまくいきません。何がうまくいかないのかというと、たとえばA[100]という配列に色々な数値を入れるためにA[x]やA[y]といった感じでx,yを変えてA[100]という一つの配列に格納したいのです。しかしこれをエディットボックスで表示させようとすると、なぜか入れた数値と別の数値が表示されてしまうのです。xとyが同じだった場合、誤って表示してしまったりするのでしょうか?どなたか教えてください。
簡単にプログラムを書くと
int A[100],x,y,i,j,X,Y;
CString pt1,pt2;
x=y=0;X=Y=1;
for(j=0;j<=10;j++){
for(i=0;i<=10;i++){
if(ある条件のとき){
A[x]=i;
x++;X++;
}
}}
for(j=0;j<=10;j++){
for(i=0;i<=10;i++){
if(別のある条件のとき){
A[y]=j;
y++;Y++;
}
}}
for(x=0;x<X;x++){
pt1.Format("表示 = %d\r\n",A[x]);
〜省略〜
}
for(y=0;y<Y;y++){
pt1.Format("表示 = %d\r\n",A[y]);
〜省略〜
}
といった感じです。要はA[100]という一つの配列を用いたとき、x,yを変えただけで数値をきちんと表示できるかを知りたいのです。x,yは0→?なので最初などは、x=0 で i=3 → A[0]=3 , y=0 で J=2 → A[0]=2 となり間違いそうなのですが…。どうなのでしょう?わかりにくい文章ですみません。よろしくお願いします
> 要はA[100]という一つの配列を用いたとき、
> x,yを変えただけで数値をきちんと表示できるかを知りたいのです。
> x,yは0→?なので最初などは、
> x=0 で i=3 → A[0]=3,
> y=0 で J=2 → A[0]=2 となり間違いそうなのですが…。
> どうなのでしょう?
> わかりにくい文章ですみません。
何を問題にされているのか、全然わかりません。
A[0]=3のあとA[0]=2とすると、何を間違うのですか?
どのような結果を得たいのですか?
> A[x]やA[y]といった感じでx,yを変えてA[100]という一つの配列に格納したいのです。しかしこれをエディットボックスで表示させようとすると、なぜか入れた数値と別の数値が表示されてしまうのです。xとyが同じだった場合、誤って表示してしまったりするのでしょうか?
x=1でA[x]=1とした後に、y=1でA[y]=2とした場合、
x=1でのA[x]の値は当然'2'となってます。
本当に、入っている値と表示されている値がことなりますか?
^^^^^^^^^^^^
表示の直前に、ウォッチなどで、配列の値を確認して下さい。
恐らく、あなたが入れたと思っている値と、表示前に配列に格納されている値が
異なると思います。
これは、あなたが意図した(入れたと思った)ようにコードが記述できていないからです。
”ある条件の時”とあるため、あなたが何を期待し、実際のコードでは、
どのような値が設定されるかは、我々には分かりかねますので、
そのあたりの条件も明確にし、また、あなたが何を意図したのかを明確にして下さい。
返信ありがとうございます。わかりにくい文章で申し訳ありませんでした。
えっとですね、A[100]という一つの配列を用いて様々な値を格納したいのです。
で、A[x],A[y]として別々の条件で得た値を配列に格納して、最後に別々の条件ごとに表示したかったのです。…この文章でわかりますでしょうか?
何度やっても間違った値を表示してしまいます。やはり条件ごとに配列の数を増やすしかないのでしょうか?ただ単にA[100]にA[x],A[y]で x と y をかえただけの形では間違うのは当然なのでしょうか?しかも x と y は格納する個数及び、何番目かを意図してるのですが、数値が 0〜??という増やし方なので、間違えて当たり前のようなのです。やはり配列の数を増やすべきなのでしょうか?
x == y == 0 であるとき、
A[x] == A[y] == A[0] であることはわかりますか?
添字変数の名前が変わったからといって、その中身が同じであれば、指すところは当然同じです。
区別したいのであれば、x と y が決して同じ値にならないようにすることでしょう(x は 0 〜 49 まで、y は 50 〜 99 までの値しか取らないとか)。
これが、配列を分けることにたいしてどの程度のメリットがあるのかわかりませんが。
ご返信ありがとうございます。やはり配列の個数を増やすか、値の区別をするしかないようですね。配列の個数を増やさずにうまく値を格納したかったのです。別の方法を考えて見ます。どうもありがとうございました。
ツイート | ![]() |