¸ÞÀϺ¸³»±â

À̸§°Ë»ö

::: SHIN, Byeong-Chun's Board


57 16 Åë°èÄ«¿îÅÍ º¸±â   ȸ¿ø °¡ÀÔ È¸¿ø ·Î±×ÀÎ °ü¸®ÀÚ Á¢¼Ó --+
Name   ½Åº´Ãá
Subject   ¼ºÀû¼ÒÆà C-language
#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

°Ô½Ã¹°À» À̸ÞÀÏ·Î º¸³»±â ÇÁ¸°Æ®Ãâ·ÂÀ» À§ÇÑ È­¸éº¸±â
DATE: 2018.07.02 - 17:38


 ÀÌÀü±Û Scipy Lecture Notes
 ´ÙÀ½±Û OpenMP
±Û³²±â±â»èÁ¦Çϱâ¼öÁ¤Çϱâ´äº¯´Þ±â°Ë»ö¸ñ·Ï º¸±â