|
먼저 할 일의 리스트를 만드세요. 가령
1. 파일로 작성된 성적 자료를 읽을 수 있어야 한다. fscanf 같은 걸 써서.
2. 구조체 변수로 입력하라고 했으니, 구조체를 어떻게 만들어야 할지를 고민한다. 일단 성적자료가 들어가야 하고, 총점이 있어야 할 것이고, 등급이 있어야 함. 총 3가지?
3. 총점을 기준으로 내림 차순으로 정렬한 후, 총점과 등급을 파일로 출력, fprintf 같은 걸 써서
기본적이 C 관련 책에는 위의 내용이 다 나와 있을 겁니다.
Hope this help ~~
츠바사 님이 쓰신 글 :
: 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;
: }
|