|
1. 파일로 작성된 성적자료를 구조체 변수로 입력하고, 가중치를 적용한 총점을 구하여 등급을 부여한다.
95이상 : A+
90이상 : A0
85이상 : B+
80이상 : B0
75이상 : C+
70이상 : C0
65이상 : D+
60이상 : D0
60미만 : F
2. 총점의 내림차순으로 입력된 성적자료와 총점 및 등급을 정렬하여 파일로 출력한다.
친구껄 보고 공부를 하고 있는데 잘 이해가 안되네요 ㅠ
어느부분은 가중치를 준부분이다 어떤부분은 텍스트파일을 읽어온 부분이다
이런거좀 알려주실수 있는분 계신가요 ㅠ
그리고 2번에 총점을 내림차순으로 정렬해서 파일로 출력하는건 어떻게하나요?ㅠ
가르쳐주세요~
부탁드립니다 ㅠ
#include <stdlib.h>
struct pscr{
int num;
char snm[10];
char nme[10];
int mid;
int fin;
int hw1;
int hw2;
int atd;
};
typedef struct pscr pscr;
int grd(int);
char *gd[]={'A+','Ao','B+','Bo','C+','Co','D+','Do','F'};
double ttp( pscr *);
pscr psc;
int main(){
FILE *fp, *fp2;
char fn[] = 'strscr.txt', fn2[] = 'nlst.txt';
pscr *pps = &psc;
if ((fp = fopen(fn,'r')) == NULL) {
printf('can't open the file\n');
exit(1);
}
if ((fp2 = fopen(fn2,'w')) == NULL) {
printf('can't open the file\n');
exit(1);
}
while (!feof(fp)) {
fscanf(fp,'%d%s%s%d%d%d%d%d',&psc.num ,psc.snm ,
psc.nme ,&psc.mid ,&psc.fin ,&psc.hw1 ,&psc.hw2 ,&psc.atd );
printf('%3d%10s%10s%5d%5d%5d%5d%5d\n',pps->num ,
pps->snm ,pps->nme ,pps->mid ,pps->fin ,pps->hw1 ,pps->hw2 ,pps->atd );
fprintf(fp2,'%3d%10s%10s%5d%5d%5d%5d%5d\n',pps->num ,
pps->snm ,pps->nme ,pps->mid ,pps->fin ,pps->hw1 ,pps->hw2 ,pps->atd );
printf('%28.1f %4.1f %4.1f %4.1f %4d %8.1f',pps->mid *0.3,pps->fin *0.4,
pps->hw1 *0.3,pps->hw2 *0.3,pps->atd,ttp(pps));
fprintf(fp2,'%28.1f %4.1f %4.1f %4.1f %4d %8.1f',pps->mid *0.3,pps->fin *0.4,
pps->hw1 *0.3,pps->hw2 *0.3,pps->atd,ttp(pps));
printf('%8s',gd[grd((int)ttp(pps))]);
fprintf(fp2,'%8s',gd[grd((int)ttp(pps))]);
printf('\n\n');fprintf(fp2,'\n\n');
}
fclose(fp);
fclose(fp2);
return 0;
}
double ttp(pscr *x)
{
double y = (double)x->mid * 0.3 + x->fin * 0.4 + x->hw1 * 0.3 + x->hw2 * 0.3 + x->atd;
return y;
}
int grd(int x)
{
int y;
if( x >= 95 )
y=0;
else if(x >= 90)
y=1;
else if(x >= 85)
y=2;
else if(x >= 80)
y=3;
else if(x >= 75)
y=4;
else if(x >= 70)
y=5;
else if(x >= 65)
y=6;
else if(x >= 60)
y=7;
else if(x >= 0)
y=8;
return y;
}
|