• ベストアンサー

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です。)をとりだしたいのですが、良い方法はないでしょうか?? アドバイスお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gonbee774
  • ベストアンサー率38% (198/511)
回答No.5

A[i]が最小であることを見つけたとき(if文が真のとき)、iの値を他の変数へ代入してやれば良いのでは?と思います。 ちなみに、iは指数は『要素番号』と呼ぶらしいです。 #記憶では『指数』と呼んでいたような気もしますが、古い教科書を引っ張り出したら、『要素番号』ってありました。

その他の回答 (4)

  • chirubou
  • ベストアンサー率37% (189/502)
回答No.4

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)
回答No.3

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)
回答No.2

単純に、iが求めている答えではないでしょうか? >A[?]=1の?の値のことです。上記プログラムではA[2]=1なので2です。)をとりだしたい これの?は、iですよ。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

最小となるインデックスの場所を覚えておけば済む話です。 このとき、複数インデックスで最小値を取る場合を考慮しましょう。

関連するQ&A

専門家に質問してみよう