/*이 내용이 score.dat형태로 저장되어있어야함.
88 77 89
91 75 98
89 87 85
88 79 80
91 75 92
69 67 91
87 80 89
81 75 91
89 70 89
89 97 88
96 85 96
59 76 90
79 57 89
69 81 68
97 88 91
99 92 80
59 76 90
70 56 99
71 91 81
82 98 95
90 90 70
*/
#include <stdio.h>
#include <stdlib.h>
#define N 21
void read(int score[][3]){
FILE *f;
int i,j;
char fname[] = "score.dat";
if((f=fopen(fname,"r")) == NULL){
printf("아무것도 없네여\n");
exit(0);
}
for(i = 0;i<N;i++){
for(j=0;j<3;j++){
fscanf(f,"%d",&score[i][j]);
}
}
fclose(f);
}
void bysubject(int subject[], int score[][3]){
int i,j,sum;
for(j = 0 ;j<3;j++){
sum = 0;
for(i=0;i<N;i++){
sum += score[i][j];
}
subject[j]=sum/N;
}
}
void bystudent(int student[], int score[][3]){
int i, j, sum;
for(i = 0;i<N;i++){
sum = 0;
for(j=0;j<3;j++){
sum += score[i][j];
}
student[i]=sum/3;
}
}
void ranking(int student[],int rank[],int rank2[]){
int i, j,count,same;
for(i = 0;i<N;i++){
count = 1;
same = 0;
for(j=0;j<N;j++){
if(i!=j){
if(student[i]<student[j]) count++;
if(student[i]==student[j]) same++;
}
}
rank[i]=count;
rank2[i]=same;
}
}
int main(){
int score[N][3], subject[3],student[N],i,j,rank[21],rank2[21];
char fname[] = "grade.txt";
printf("파일을 읽겠습니다\n");
read(score);
printf("과목별 평균을 읽겠습니다\n");
bysubject(subject,score);
printf("학생별 평균을 읽겠습니다\n");
bystudent(student,score);
ranking(student,rank,rank2);
FILE *fi;
printf("국어 영어 수학\n");
for(i=0;i<N;i++){
for(j=0;j<3;j++){
printf("= ",score[i][j]);
}
printf("\n");
}
printf("\n");
printf("과목별 평균\n국어:= 영어:= 수학:=\n",subject[0],subject[1],subject[2]);
printf("학생 평균 석차 동점자\n");
for(i=0;i<N;i++){
printf("-. ] M",i+1,student[i],rank[i]);
if(rank2[i]!=0) printf(" (%d명)",rank2[i]+1);
printf("\n");
}
fi = fopen(fname,"w");
fprintf(fi,"과목별 평균\n국어:= 영어:= 수학:=\n",subject[0],subject[1],subject[2]);
fprintf(fi,"학생 평균 석차 동점자\n");
for(i=0;i<N;i++){
fprintf(fi,"-. ] M",i+1,student[i],rank[i]);
if(rank2[i]!=0) fprintf(fi," (%d명)",rank2[i]+1);
fprintf(fi,"\n");
}
}
댓글 0