こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

5つの要素を持つ配列から最高点を出力する

1,5つの要素を持つ配列を受け取り、その最大値を返すint main(int x[])関数を定義してください。max()関数を使い、キーボードから学生の数とテストの点数を入力させ、最高点を出力うするコードを記述してください。

テストの点数を入力してください。
50
49
35
68
75
最高点は75点です、
みたいな感じの例題を作るまとめの練習ですが、ちょっと頭がこんがらがってしまいました。

とりあえず私が、途中まで記述したソースです。
#include<iostream>
using namespace std;

int max(int x[]);

int main() {

int tensu[5];

for (int i = 0; 0 < 5; i++) {

cout << "テストの点数を入力してください。\n";
cin >> tensu[i];



}


return 0;

}
int max(int x[]) {


}
関数を使ってそれでif判定だとは思うのですが、関数を使ってifを使う方法が解りません。
ご教示よろしくお願いします。

投稿日時 - 2020-05-09 20:07:32

QNo.9746430

困ってます

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

今回のコードの設計ポリシーは、
mainからは「何々を実行しろ」という指令を出すことに徹しています。
データの入力用の関数input()

最高点を求める関数max()
を呼び出すと、呼び出された側は
「合点だ」といって、データ入力や最高点の計算を行ないます。
今くらいのコードであれば、main()に全部書いてもいいっちゃいいですが、
それは当方のポリシー(mainに実際の処理を書くことはほとんどしない)に
反します。

投稿日時 - 2020-05-10 09:59:58

お礼

回答ありがとうございます。
色々応用が利かない頭なので復習して勉強していきたいと思います。
ありがとうございました。

投稿日時 - 2020-05-10 11:52:30

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>#define N (5)という部分
コード中にNという単語が出てきたら、それを(5)に置き換えてから
コンパイルしてね、という指示です。
5がそこら中に出てきたとき、例えば10人分の最高点に変えようと思ったら
すべての5を漏れなく10に修正する必要があり、めんどうですよね。
#defineを使えば、(5)を(10)にする1ヶ所だけですみます。

>それとポインタは使ってもよいのでしょうか?
関数の実引数において、
int array[]

int *array
は等価です。

投稿日時 - 2020-05-10 09:55:38

お礼

回答ありがとうございます。

投稿日時 - 2020-05-10 11:51:11

ANo.1

こんな感じでしょうか。

#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;
}

投稿日時 - 2020-05-09 20:57:48

補足

あ、、すみませんinputはinputですね・・・。
#define N (5)が解りません。

投稿日時 - 2020-05-10 08:45:42

お礼

回答ありがとうございます。
疑問点が出たのでそこだけ聞きたいのですが、
#define N (5)という部分と、inputのinputって部分は何ですか?
それとポインタは使ってもよいのでしょうか?
ご教示お願いします。

投稿日時 - 2020-05-10 08:43:57