"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
를 사용하여 인덱스를 위한 변수를 선언합니다.
댓글 입력