#include <stdio.h>
#define STD_NO 5
#define SUB_NO 3
int sum_sub(int v[][SUB_NO], int sub)
{
int i;
int sum = 0;
for(i = 0;i < STD_NO;i++)
sum += v[i][sub];
return(sum);
}
double ave_sub(int v[][SUB_NO], int sub)
{
return((double)sum_sub(v, sub) / STD_NO);
}
int top_sub(int v[][SUB_NO], int sw)
{
int i;
int tmp = ave_sub(v, 0);
for(i =1;i < STD_NO;i++){
if(sw){
if(ave_sub(v, i) > tmp)
tmp = ave_sub(v, i);
}
else {
if(ave_sub(v, i) < tmp)
tmp = ave_sub(v, i);
}
}
return(tmp);
}
int sum_std(int v[][SUB_NO], int no)
{
int i;
int sum = 0;
for(i = 0;i < SUB_NO;i++)
sum += v[no][i];
return(sum);
}
int top_std(int v[][SUB_NO], int sw)
{
int i;
int tmp = sum_std(v, 0);
int bangou = 1;
for(i = 1;i < SUB_NO;i++){
if(sw){
if(sum_std(v, i) > tmp){
tmp = sum_std(v, i);
bangou = i;
}
}
else {
if(sum_std(v, i) < tmp){
tmp = sum_std(v, i);
bangou = i;
}
}
}
return(bangou);
}
int main (void)
{
int i;
int tensu[STD_NO][SUB_NO];
for(i = 0;i < STD_NO;i++){
printf("[%2d番]", i+1);
printf("国語:"); scanf("%d", &tensu[i][0]);
printf(" 数学:"); scanf("%d", &tensu[i][1]);
printf(" 英語:"); scanf("%d", &tensu[i][2]);
}
putchar('\n');
printf("3教科の平均点が最大の学生番号は%d番です。\n", top_std(tensu,1));
printf("3教科の平均点が最小の学生番号は%d番です。\n", top_std(tensu,0));
printf("の平均点は%.fで最高点です。\n", top_sub(tensu,1));
printf("の平均点は%.fで最低点です。", top_sub(tensu,0));
return(0);
}
3教科の平均点が最大と最小の学生番号と各平均点が最大と最小の教科を表示するを表示する。
-
ares
3教科の平均点が最大と最小の学生番号と各平均点が最大と最小の教科を表示するを表示する。
Re: 3教科の平均点が最大と最小の学生番号と各平均点が最大と最小の教科を表示するを表示する。
「どううまくいかないのか」を教えてください。
- bitter_fox
- 記事: 607
- 登録日時: 15年前
- 住所: 大阪府
Re: 3教科の平均点が最大と最小の学生番号と各平均点が最大と最小の教科を表示するを表示する。
int tmpにave_subの戻り値を代入してますが、ave_subの戻り値の型は何でしょうか?ares さんが書きました:double ave_sub(int v[][SUB_NO], int sub) { return((double)sum_sub(v, sub) / STD_NO); } int top_sub(int v[][SUB_NO], int sw) { int i; int tmp = ave_sub(v, 0); for(i =1;i < STD_NO;i++){ if(sw){ if(ave_sub(v, i) > tmp) tmp = ave_sub(v, i); } else { if(ave_sub(v, i) < tmp) tmp = ave_sub(v, i); } } return(tmp); }
これは何を出力したいのでしょうか?
最後に編集したユーザー bitter_fox on 2011年7月03日(日) 14:49 [ 編集 1 回目 ]