"C" 백준4344 반복문이 잘 실행되지 않습니다

조회수 435회

https://www.acmicpc.net/problem/4344

#include <stdio.h>

int main()

{
    int testcase;
    scanf("%d",&testcase);
    for(int i=0;i<testcase;i++)  //테스트 케이스의 개수 입력받음
    {
        double arr[1000],sum=0,avg=0,num=0,count=0;
        scanf("%lf",&num); //문자열의 개수 입력받음

        for(int i=0;i<num;i++){
            scanf("%lf",&arr[i]);  //문자열을 배열 arr에 입력
        }

        for(int i=0;i<num;i++){
            sum+=arr[i];
            avg=sum/num;  //점수의 평균을 구함
        }

        for(int i=0;i<num;i++){
            if(arr[i]>avg)
                count++;  //평균보다 높은 점수를 가려냄
        }

        printf("%.3f%%\n",count/num*100);  //비율 출력
    }
}

입력

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

예상한 결과

40.000%
57.143%
33.333%
66.667%
55.556%

출력된 결과

40.000%
57.143%
33.333%
66.667%

테스트 케이스가 5라면 반복문이 5회 실행되어야 되는데 4회밖에 실행이 되지 않습니다.

1 답변

  • 5
    5 50 50 70 80 100
    7 100 95 90 80 70 60 50
    3 70 90 80
    3 70 90 81
    9 100 99 98 97 96 95 94 93 91
    

    위 입력에 대해서 해당 코드로 실행해 보니 다음과 같은 결과를 얻었습니다.

    $ cat ../input_large.txt | Debug/main.exe 
    40.000%
    57.143%
    33.333%
    66.667%
    55.556%
    

    문제 없이 5개의 결과가 나오는 것을 확인했습니다.

    혹시 모르니 코드의 마지막 줄에 fflush(stdout); 을 넣어 보세요.

    첨언으로 for(int i=0;i<testcase;i++) 안의 for에서는 i를 이요한 루프를 사용하지 마세요. 이러한 코드는 실수를 유발하게 되어 문제점을 찾기 어렵게 됩니다. 통상 i, j, k 를 사용하여 인덱스를 위한 변수를 선언합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)