ÇÁ·Î±×·¡¹Ö

 3198, 1/160 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   jj4st13
   ÆÄÀÏÀÔÃâ·Â Áú¹®....

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3230 [º¹»ç]


ÆÄÀÏ¿¡ ¾Æ¹« ³»¿ëÀÌ ¾øÀ»¶§ ¸®ÅÏÀ» ÇÏ°Ô ÇßÁö¸¸ ´ÙÀ½ ÄÚµå·Î ³Ñ¾î°©´Ï´Ù...

#include <stdio.h>
#include <string.h>

int read_score();
char set_grade(int score, int grade_count[]);
char grade;
int main()
{
int total = 0, count = 0, i;
int grade_count[5] = {0,0,0,0,0};
int score;
FILE *fp;
fp = fopen("text.txt","r");
printf("Á¡¼öÃâ·Â(-1Àº Á¡¼öÀÔ·Â ³¡) \n\n");

while(1)
{
score = read_score(fp);//ÀÔ·ÂÇÒ ¼ºÀû ºÎ¸£´Â ÇÔ¼ö
printf("%d\n",score);//ÇØ´ç Á¡¼ö Ãâ·Â
if(score == -1)
break;

else
{
//ÀÔ·ÂÇÑ ¼ºÀû¿¡ ÇØ´çÇÏ´Â ÇÐÁ¡À» ¹è¿­¿¡ Ãß°¡ÇÏ´Â ÇÔ¼ö
set_grade(score, grade_count);

total+=score;
count++;
}
}

fclose(fp);

if(count==0)
printf("ÀÔ·ÂÀÌ ¾ø½À´Ï´Ù.\n");

else
{
printf("ÀÔ·ÂÇϽŠÁ¡¼öÀÇ ÃÑÇÕÀº %d ÀÔ´Ï´Ù.\n",total);
printf("ÀÔ·ÂÇϽŠÁ¡¼öÀÇ Æò±ÕÀº %d ÀÔ´Ï´Ù.\n\n",total/count);
printf("A B C D F\n");
for(i = 0; i < 5; ++i)
printf("%d ", grade_count[i]);

printf("\n");
}

return 0;
}


int read_score(FILE *fp)
{  
int score;

if(fp == NULL)//ÆÄÀÏ¿¡ Á¡¼ö°¡ ¾ø°Å³ª
return -1;//ÆÄÀÏÀÔ·ÂÀÌ ³¡³ª¸é -1 ¹Ýȯ

fscanf(fp,"%d",&score);
while(score>100||score<-1)
fscanf(fp,"%d",&score);

printf("%c\n\n",grade);//ÇÐÁ¡Ãâ·Â
return score;
}


//°¢score¿¡ ´ëÇÑ Á¡¼ö¸¦ ¹è¿­¿¡ ÀúÀå
char set_grade(int score, int grade_count[])
{

switch (score / 10){
case 10:
grade = 'A';
grade_count[0]++;
break;
case 9:
grade = 'A';
grade_count[0]++;
break;
case 8:
grade = 'B';
grade_count[1]++;
break;
case 7:
grade = 'C';
grade_count[2]++;
break;
case 6:
grade = 'D';
grade_count[3]++;
break;
default:
grade = 'F';
grade_count[4]++;
break;
}
return grade;

}

¸®µåÇÔ¼ö¿¡¼­ Æ÷ÀÎÅ͸¦ ¹Þ¾Æ¼­.....¸¸¾à ÆÄÀÏ¿¡ ¾Æ¹«°Íµµ ¾øÀ¸¸é return -1À» ÇØ¾ßÇϴµ¥...¹Ù·Î fscanf·Î °¡´Âµí ÇÕ´Ï´Ù....
¾Æ¹«·± ÀÌ»óÀÌ ¾ø¾îº¸À̴µ¥ ¿Ö ±×·±°ÅÁÒ?


¶Ç Áú¹® ÇѰ¡Áö...ÆÄÀÏÀ» ¿ÀÇÂÇϴµ¥..¸¸¾à ±× ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù°í Ãâ·ÂÇÏ·Á¸é
¾î¶»°Ô ÇØ¾ßÇϳª¿ä
if(fp==NULL) ----- ÀÌ°Ç ÆÄÀÏ¿¡ ¾Æ¹«·± ³»¿ëÀÌ ¾øÀ» °æ¿ìÀܾƿä... ¾î¶»°Ô ÇØ¾ßÇÒÁö..

  Hit : 3923     Date : 2011/12/04 04:16



    
prosthetics /*
fscanf¿¡¼­ f1۸¦ ´©¸£¸é µµ¿ò¸»ÀÌ ³ª¿É´Ï´Ù.
http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=KO-KR&k=k(%22STDIO%2fFSCANF%22);k(FSCANF);k(DevLang-%22C%2B%2B%22);k(TargetOS-WINDOWS)&rd=true
If an error occurs, or if the end of the file stream is reached before the first conversion, the return value is EOF for fscanf and fwscanf.
fscanf´Â ÆÄÀÏÀÇ ³¡À» ¸¸³ª¸é EOF¸¦ ¹ÝȯÇÕ´Ï´Ù.

fp==nullÀÌ ¾Æ´Õ´Ï´Ù.
¾Æ·¡Ã³·³ ¹Ù²ãÁÖ¼Å¾ß ÇÕ´Ï´Ù.
if(fscanf(fp,"%d",&score)==EOF);//
return -1;//

fp´Â Ç×»ó ÆÄÀÏÀÇ ½ÃÀÛÁÖ¼Ò¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.
fopenÀ» ÅëÇØ ¸Þ¸ð¸®¿¡ ¿Ã¶ó¿Â ÁÖ¼Ò ¸»ÀÔ´Ï´Ù.
fscnf, fprintf°°Àº ÇÔ¼ö¸¦ »ç¿ëÇØµµ fp°ªÀº ÇѰᰰÀÌ ÆÄÀÏÀÇ ½ÃÀÛÁÖ¼Ò¸¦ °¡¸®Åµ´Ï´Ù.

ÆÄÀÏÀÇ À§Ä¡¸¦ °¡¸®Å°´Â°ÍÀº µû·ÎÀÖ½À´Ï´Ù.
fscanf³ª fprintf°°ÀÌ ÆÄÀÏ¿¡ Àбâ, ¾²±â ¸í·ÉÀ» ³»¸®¸é ÀÚµ¿À¸·Î ´ÙÀ½ ´Ü¾î·Î ³Ñ°¡¾ß ÇÕ´Ï´Ù.
¿¹¸¦ µé¾î "10 20 30"°¡ ÆÄÀÏ¿¡ ÀúÀåµÇ¾îÀִµ¥
fscanf(fp,"%d",&score);¿Í °°Àº ¸í·ÉÀ» »ç¿ëÇß´Ù¸é score¿¡ 10ÀÌ µé¾î°¡¾ß °ÚÁö¿ä.
±× ´ÙÀ½¿¡ À§ ¸í·ÉÀ» ´Ù½Ã Çѹø ½ÇÇàÇϸé score¿¡´Â 20ÀÌ µé¾î°¡¾ß ÇÕ´Ï´Ù.
ÀÌ·¸°Ô ÀÚµ¿À¸·Î ´ÙÀ½ À§Ä¡¸¦ ±â¾ïÇÏ´Â °ÍÀ» offsetÀ̶ó°í ºÎ¸¨´Ï´Ù.
offsetÀº ÆÄÀÏ Àбâ, ¾²±â¿Í °°Àº ¸í·ÉÀ» ³»¸®¸é ÀÚµ¿À¸·Î Áõ°¡ÇÕ´Ï´Ù.
À̰ÍÀ» Á¶ÀýÇϱâ À§ÇØ fseek()¶ó´Â ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù. (www.winapi.co.kr ->C/C++·¹ÆÛ·±½º)

°ªÀÌ ÁöÁ¤¾ÈµÈ gradeÀü¿ªº¯¼ö¿¡ Á¢±ÙÇÏ´Â ³í¸®Àû ¿À·ùµµ º¸À̴µ¥
¾ÆÁ÷ ÇÁ·Î±×·¥ ¿Ï¼º ¾ÈÇÏ½Å°Í °°À¸´Ï±î ¾Ë¾Æ¼­ °íÄ¡½Ç°Å¶ó ¹Ï½À´Ï´Ù.
*/
#include <stdio.h>
#include <string.h>

int read_score(FILE *fp);//
char set_grade(int score, int grade_count[]);
char grade;
int main()
{
int total = 0;//
int count = 0;//
int i;//
int grade_count[5] = {0,0,0,0,0};
int score;
FILE *fp;
fp = fopen("text.txt","r");

printf("Á¡¼öÃâ·Â(-1Àº Á¡¼öÀÔ·Â ³¡) \n\n");

while(1)
{
score = read_score(fp);//ÀÔ·ÂÇÒ ¼ºÀû ºÎ¸£´Â ÇÔ¼ö
printf("%d\n",score);//ÇØ´ç Á¡¼ö Ãâ·Â
if(score == -1)
break;

else
{
//ÀÔ·ÂÇÑ ¼ºÀû¿¡ ÇØ´çÇÏ´Â ÇÐÁ¡À» ¹è¿­¿¡ Ãß°¡ÇÏ´Â ÇÔ¼ö
set_grade(score, grade_count);

total+=score;
count++;
}
}

fclose(fp);

if(count==0)
printf("ÀÔ·ÂÀÌ ¾ø½À´Ï´Ù.\n");

else
{
printf("ÀÔ·ÂÇϽŠÁ¡¼öÀÇ ÃÑÇÕÀº %d ÀÔ´Ï´Ù.\n",total);
printf("ÀÔ·ÂÇϽŠÁ¡¼öÀÇ Æò±ÕÀº %d ÀÔ´Ï´Ù.\n\n",total/count);
printf("A B C D F\n");
for(i = 0; i < 5; ++i)
printf("%d ", grade_count[i]);

printf("\n");
}

return 0;
}


int read_score(FILE *fp)
{
int score;

if(fscanf(fp,"%d",&score)==EOF);//
return -1;//
//if(fp == NULL)//ÆÄÀÏ¿¡ Á¡¼ö°¡ ¾ø°Å³ª
// return -1;//ÆÄÀÏÀÔ·ÂÀÌ ³¡³ª¸é -1 ¹Ýȯ

fscanf(fp,"%d",&score);
while(score>100 || score<-1)
fscanf(fp,"%d",&score);

printf("%c\n\n",grade);//ÇÐÁ¡Ãâ·Â

return score;
}


//°¢score¿¡ ´ëÇÑ Á¡¼ö¸¦ ¹è¿­¿¡ ÀúÀå
char set_grade(int score, int grade_count[])
{

switch (score / 10){
case 10:
grade = 'A';
grade_count[0]++;
break;
case 9:
grade = 'A';
grade_count[0]++;
break;
case 8:
grade = 'B';
grade_count[1]++;
break;
case 7:
grade = 'C';
grade_count[2]++;
break;
case 6:
grade = 'D';
grade_count[3]++;
break;
default:
grade = 'F';
grade_count[4]++;
break;
}
return grade;

}
2011/12/04