- ベストアンサー
配列から最高点を出力する方法とは?
- 学生のテストの点数を配列として受け取り、最高点を出力する方法を教えてください。
- 関数を使ってif文で最高点を判定する方法についてわかりません。どうすればいいですか?
- みたいな感じの例題を作るまとめの練習ですが、ちょっと頭がこんがらがってしまいました。お手すきのときにご教示いただけると幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
今回のコードの設計ポリシーは、 mainからは「何々を実行しろ」という指令を出すことに徹しています。 データの入力用の関数input() と 最高点を求める関数max() を呼び出すと、呼び出された側は 「合点だ」といって、データ入力や最高点の計算を行ないます。 今くらいのコードであれば、main()に全部書いてもいいっちゃいいですが、 それは当方のポリシー(mainに実際の処理を書くことはほとんどしない)に 反します。
その他の回答 (2)
- asuncion
- ベストアンサー率33% (2127/6289)
>#define N (5)という部分 コード中にNという単語が出てきたら、それを(5)に置き換えてから コンパイルしてね、という指示です。 5がそこら中に出てきたとき、例えば10人分の最高点に変えようと思ったら すべての5を漏れなく10に修正する必要があり、めんどうですよね。 #defineを使えば、(5)を(10)にする1ヶ所だけですみます。 >それとポインタは使ってもよいのでしょうか? 関数の実引数において、 int array[] と int *array は等価です。
お礼
回答ありがとうございます。
- asuncion
- ベストアンサー率33% (2127/6289)
こんな感じでしょうか。 #include <iostream> using namespace std; #define N (5) void input(int *score) { cout << "テストの点数を入力してください。\n"; for (int i = 0; i < N; i++) { cin >> score[i]; } } int max(int *score) { int max = score[0]; // 配列の先頭を、仮の最高点とする for (int i = 1; i < N; i++) { if (score[i] > max) // 今見ている点数が最高点より大きかったら max = score[i]; // その点数を最高点にする } return max; } int main(void) { int score[N]; input(score); cout << "最高点は、" << max(score) << "点です。\n"; return 0; }
お礼
回答ありがとうございます。 疑問点が出たのでそこだけ聞きたいのですが、 #define N (5)という部分と、inputのinputって部分は何ですか? それとポインタは使ってもよいのでしょうか? ご教示お願いします。
補足
あ、、すみませんinputはinputですね・・・。 #define N (5)が解りません。
お礼
回答ありがとうございます。 色々応用が利かない頭なので復習して勉強していきたいと思います。 ありがとうございました。