반응형

요구사항

#include <stdio.h>


main()
{
         double next_num;
         double sum;
         double ave;
         int count;
         int flag;

 

         count = 0;
         sum = 0.0;

 

         flag = scanf("%lf", &next_num);
         while (flag !=EOF){
                   sum = sum + next_num;
                   count = count +1;
                   flag = scanf("%lf", &next_num);
         }

 

         ave = sum/(double)count;
         printf("The average is %g.\n", ave);
}

  

오류를 못찾겠습니다.

답과 함께 설명해주시면 감사하겠습니다.

 

 

//수정된 소스

 #include <stdio.h>


main()
{
         double next_num;
         double sum;
         double ave;
         int count;
         int flag;

 

         count = 0;
         sum = 0.0;

 
       scanf("%lf", &next_num);
        flag=next_num; 
         while (flag !=-9999){
                   sum = sum + next_num;
                   count = count +1;
                   scanf("%lf", &next_num);
                   flag = next_num;
         }

 

         ave = sum/(double)count;
         printf("The average is %g.\n", ave);
}

 

빨간색으로 된 부분들 모두 수정

수정 이유

flag = scanf("%lf", &next_num);

이런 식으로는 원하는 결과를 얻을 수가 없습니다.

왜냐하면 scanf()함수가 입력받은 값을 리턴 하지는 않기 때문입니다.

그래서

scanf("%lf", &next_num);
 flag=next_num; 

scanf()함수로 next_num변수에 입력 받은 값을

flag 변수에 담아주도록 변경 하였습니다.

 

while(flag != EOF) 라고 사용 하셨는데

EOF는 end of file의 약자로 파일의 끝을 나타내줍니다.

예를 들어 메모장에 어떤 내용을 입력하고 저장 하였다면, 눈에는 보이지 않지만 마지막에 EOF 문자가 삽입되어 있는 것입니다.

그래서 파일의 내용을 불러올때는 while(flag != EOF) 이렇게 사용하면 처음부터 끝문자를 만날때 까지 반복문을 수행하게 됩니다.

 

while (flag !=-9999)
 제가 임의로 -9999라는 값을 입력하면 종료하라는 의미로 사용하였는데 다른 값을 사용하셔도 무방합니다.

 

 @ 실행 결과

 

 

 

 

 

----------------------------------------------------------------------------------

#include <stdio.h>


main()
{
         double next_num;
         double sum;
         double ave;
         int count;
         int flag;

 

         count = 0;
         sum = 0.0;

 

         flag = scanf("%lf", &next_num);
         while (flag !=EOF){
                   sum = sum + next_num;
                   count = count +1;
                   flag = scanf("%lf", &next_num);
         }

 

         ave = sum/(double)count;
         printf("The average is %g.\n", ave);
}

  

질문자님이 올린 소스를 그대로 사용 하기 위해서는

입력을 그만 받고자 할때 CTRL + Z를 눌러주세요

 

 

 

반응형

+ Recent posts