- リスト
前提・実現したいこと
C++をやっており、配列内の最小値をみつけたいのですが
中身が入っている(入力されている)ものだけの最小値をしりたいのですが、どのようにすればよいでしょうか。
下のソースコードにあるような形でプログラムを書きました。
見てくだされば分かると思いますが、2つ目のfor文は、無限が入っているため計算できません。
最初のfor文でINT_MAXを入れた理由は、0を入れると3つ目のfor文(最小値を求める)で0を求めてしまうためです。
ですが、2つ目のfor文では、hikakuの中身を2回足すわけですが、初めにhikakuにはINT_MAXが入ってしまっているため、
hikaku[i] = ∞ + eになってしまっています。
私は、最初にhikakuの中に0を入れて、hikakuの配列の入力されたものだけで最小値を求めたらいいと思ったのですが、どのようにすればいいでしょうか。
何も定義していなければhikakuの中には0が入ってしまいますよね。どうすれば入力された中身だけで最小値が得られるでしょうか・・・。
見にくいプログラムだと分かっておりますが、困っております。
お願いいたします。
追記です。
2つ目のfor文は絶対に必要な処理なので、これをする前提でお考え下さい。
この2つ目のfor文のせいでhikakuにINT_MAXを入れることができないのです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
int hikaku[6]; int c[6][6]; int e; int i; i = 1; だとします。 for(int f = 1; f <= 5; f++){ //hikaku[1~5]にINT_MAXを入れます。 hikaku[f] = INT_MAX; } for(int z = 1; z <= 3; z++){ hikaku[i] += e; e = c[i][e]; //ここでeの値が変わります。 z++; int min = hikaku[1]; int min_no = 1; for(int i = 2; i <= 5; i++){ //これで最小値と最小値の添え字番号を求めています。 if(min > hikaku[i]){ min = hikaku[i]; min_no = i; } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。