#include
int MAX_NO=50;
struct sdata{ char sno[10]; char sname[10]; int kor; int eng; int mat; int tot; float avg; }stud[50]; typedef struct sdata stype; int ccount=3, scount=0; int kor_tot=0, eng_tot=0, mat_tot=0; float kor_avg, eng_avg, mat_avg;
main() { int sel_no; read_data(); // ÈÀÏ¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ ±¸Á¶Ã¼·Î Àбâ sel_no=menu_sel(); // ¸Þ´º¼±ÅÃÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¼±ÅùøÈ£ ¹ÞÀ½ switch(sel_no){ case 1 : common_print("sort.dat"); break; case 2 : sort_data(sel_no); break; //¾Æ·¡¿Í °°À¸³ª sel_no=2 case 3 : sort_data(sel_no); break; //À§¿Í °°À¸³ª sel_no=3 case 4 : exit(0); default : printf("There is something wrong.\n"); } }
read_data() { FILE *fp; fp = fopen("input.dat","r"); while(!feof(fp)){ fscanf(fp,"%s %s %d %d %d", stud[scount].sno,stud[scount].sname, &stud[scount].kor,&stud[scount].eng,&stud[scount].mat); stud[scount].tot=stud[scount].kor+stud[scount].eng+stud[scount].mat; stud[scount].avg=(float)stud[scount].tot/ccount; kor_tot += stud[scount].kor; eng_tot += stud[scount].eng; mat_tot += stud[scount].mat; scount++; printf("scount=%d \n",scount); } kor_avg = (float) kor_tot/(scount-1); eng_avg = (float) eng_tot/(scount-1); mat_avg = (float) mat_tot/(scount-1); }
int menu_sel() { // char mstring[10]; int mno;
// clrscr(); printf("\n\n\t\t ¼ºÀû ó¸® ¸Þ´º \n\n"); printf("\t 1. ¼ºÀû ó¸® °á°ú¸¦ ÀúÀåµÈ ¼ø¼·Î Ãâ·Â \n"); printf("\t 2. ¼ºÀû ó¸® °á°ú¸¦ ÃÑÁ¡ ¼ø¼·Î Ãâ·Â \n"); printf("\t 3. ¼ºÀû ó¸® °á°ú¸¦ À̸§ ¼ø¼·Î Ãâ·Â \n"); printf("\t 4. ¸¶Ä¡±â \n"); printf("\n\t\t ¿øÇÏ´Â ¹øÈ£¸¦ ´©¸£¼¼¿ä \n"); scanf("%d",&mno); // gets(mstring); // mno=atoi(mstring); // mstringÀ» Á¤¼ö return(mno); }
sort_data(int sel_no) { int i; FILE *fp; fp = fopen("sort.dat","w"); if (sel_no == 2) { tsort(stud, scount-1); fprintf(fp,"\n\t\t ÃÑÁ¡¿¡ ÀÇÇÑ ¼ÒÆà °á°ú\n"); fprintf(fp,"\t\t ----------------------- \n\n"); } else if(sel_no == 3) { nsort(stud, scount-1); fprintf(fp,"\n\t\t À̸§¿¡ ÀÇÇÑ ¼ÒÆà °á°ú\n"); fprintf(fp,"\t\t ----------------------- \n\n"); } common_print(fp); }
nsort(stype keys[], int N) { int i,j; stype temp;
for(i=N-1; i>0; i--) for(j=0; j if (strcmp(keys[j].sname, keys[j+1].sname)>0) // strcmp()´Â ¹®ÀÚ¿ ºñ±³ÇÔ¼ö { temp=keys[j]; keys[j]=keys[j+1]; keys[j+1]=temp; } else continue; }
tsort(stype keys[], int N) { int i,j; stype temp;
for(i=N-1; i>0; i--) for(j=0; j if (keys[j].tot < keys[j+1].tot) { temp=keys[j]; keys[j]=keys[j+1]; keys[j+1]=temp; } else continue; } common_print(FILE *fp) { fp=fopen("sort.dat","w"); int i; fprintf(fp,"---------------------------------------\n"); fprintf(fp," Çйø À̸§ ±¹¾î ¿µ¾î ¼öÇÐ ÃÑÁ¡ Æò±Õ \n"); fprintf(fp,"---------------------------------------\n"); for(i=0; i { fprintf(fp,"%10s %10s %5d %5d %5d %5d %5.1f\n", stud[i].sno,stud[i].sname,stud[i].kor,stud[i].eng, stud[i].mat,stud[i].tot,stud[i].avg); fprintf(fp,"---------------------------------------\n"); } fprintf(fp," °ú¸ñº° Æò±Õ %5.1f %5.1f %5.1f \n", kor_avg,eng_avg,mat_avg); }
result>
[slim@math2114 tip]$ ./score scount=1 scount=2 scount=3 scount=4 scount=5 scount=6
¼ºÀû ó¸® ¸Þ´º
1. ¼ºÀû ó¸® °á°ú¸¦ ÀúÀåµÈ ¼ø¼·Î Ãâ·Â 2. ¼ºÀû ó¸® °á°ú¸¦ ÃÑÁ¡ ¼ø¼·Î Ãâ·Â 3. ¼ºÀû ó¸® °á°ú¸¦ À̸§ ¼ø¼·Î Ãâ·Â 4. ¸¶Ä¡±â
¿øÇÏ´Â ¹øÈ£¸¦ ´©¸£¼¼¿ä 3 [slim@math2114 tip]$ more sort.dat
À̸§¿¡ ÀÇÇÑ ¼ÒÆà °á°ú -----------------------
±¹¾î ¿µ¾î ¼öÇÐ ÃÑÁ¡ Æò±Õ --------------------------------------- 20013321 ±¸¹Î¿ì 90 85 99 274 91.3 --------------------------------------- 20025521 ±è±âÁÖ 70 89 98 257 85.7 --------------------------------------- 20031234 ±èö¼ö 89 99 99 287 95.7 --------------------------------------- 20021211 ¿ÀÀμö 80 90 100 270 90.0 --------------------------------------- 20028913 È«±æµ¿ 90 98 88 276 92.0 --------------------------------------- °ú¸ñº° Æò±Õ 83.8 92.2 96.8
|
|
|