- ベストアンサー
C言語の配列について
main() { int i; double min=100; double A[4]={50,2,1,3}; for(i=0; i<4; i++) {if(A[i]< min) min=A[i];} printf("%lf",min); } このようなプログラムを組んで配列Aの要素の最小値を求めています。 上記のプログラムで最小値はもとまるのですが、最小値を取るときの番地??(A[?]=1の?の値のことです。上記プログラムではA[2]=1なので2です。)をとりだしたいのですが、良い方法はないでしょうか?? アドバイスお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
A[i]が最小であることを見つけたとき(if文が真のとき)、iの値を他の変数へ代入してやれば良いのでは?と思います。 ちなみに、iは指数は『要素番号』と呼ぶらしいです。 #記憶では『指数』と呼んでいたような気もしますが、古い教科書を引っ張り出したら、『要素番号』ってありました。
その他の回答 (4)
- chirubou
- ベストアンサー率37% (189/502)
int min_idx =0; for( i=1; i<4; i++) [ if( A[i] < A[min_idx] ) min_idx = i; } printf( "A[%d]=%lf", min_idx, A[min_idx] ); てな感じでしょうか? 最大、最小を求めるような場合、初期値を 100 とか決めてしまうと、将来、値域が変わると思わぬバグになりますので、私はいつも最初の値(この場合 A[0])を使います。
- yotta
- ベストアンサー率32% (26/79)
main() { int i,n; double min=100; double A[4]={50,2,1,3}; for(i=0;i<4;i++) if(A[i]<min) { min=A[i]; n=i; } printf("A[%d]=%lf",n,min); }
- xcode_15
- ベストアンサー率18% (19/102)
単純に、iが求めている答えではないでしょうか? >A[?]=1の?の値のことです。上記プログラムではA[2]=1なので2です。)をとりだしたい これの?は、iですよ。
- koko_u_
- ベストアンサー率18% (459/2509)
最小となるインデックスの場所を覚えておけば済む話です。 このとき、複数インデックスで最小値を取る場合を考慮しましょう。