n人の教科ごとの最高点、最低点を求めるプログラム
n人の教科ごとの最高点、最低点を求めるプログラム
C言語で、タイトルのようなプログラムを作成しています。(n≦100)
教科は国語、数学、英語の3教科です。
作る際の条件として、最高点と最低点を同時に求める関数minmaxを一つだけしか作れません。
入力例)
% ./a.out
number of persons: 3
Japanese Math English
No.1: 90 80 70
No.2: 71 91 81
No.3: 82 72 92
min score: 71 72 70
max score: 90 91 92
現在、構造まで習いました。その知識をもとに以下のようにプログラムしました。(ただ、教科ごとの最高、最低点を求める部分は代表して国語の点の最低点を求める部分だけ載せました)
#include <stdio.h>
#define MAX 100
struct score{
int jpn;
int math;
int eng;
};
void minmax(struct score, int, struct score *, struct score *);
main(){
struct score s[MAX], min, max;
int n, i;
printf("number of persons: ");
scanf("%d", &n);
printf("Japanese, Math, English\n");
for (i = 0; i < n; i++) {
printf("No.%d: ", i+1);
scanf("%d %d %d", &(s[i].jpn), &(s[i].math), &(s[i].eng));
}
minmax(s[MAX], n, &min, &max); <------------(☆)
printf("min score: %3d%3d%3d\n", min.jpn, min.math, min.eng);
printf("max score: %3d%3d%3d\n", max.jpn, max.math, max.eng);
}
void
minmax(struct score s[], int n, struct score *minscore, struct score *maxscore)
{
int i, max, min;
for (i = 1, min = s[0].jpn; i < n; i++) {
if (min > s[i].jpn) {
min = s[i].jpn;
}
}
minscore->jpn = min;
(以下略)
}
しかし、これをコンパイルすると、
「(☆):パラメータの型1が関数宣言と一致しません。」と出ます。
どこがおかしいのでしょうか、どなたか教えてください。
お礼
説明不足ですみません・・。 この件なのですが、ループ処理を使わずに、簡単にできる方法がありました。 お手をわずらわっせてすみませんでした。 ありがとうございました。 また何かありましたらよろしくお願いします。