대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
소스코드
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int stdNum; //학생수
int sum; //합계
int stdCnt; //평균학생 수
double average; // 소수점 3자리 평균
double stdRatio; //학생 비율
while (1) //반복
{
sum = 0;
stdCnt = 0;
cin >> stdNum;
if (stdNum == 0)
{
break; // 0명일 경우 while 탈출
}
int *score = new int[stdNum]; //메모리 동적할당
if (!score)// 메모리 할당 실패시
{
return 0;
}
for (int i = 0; i < stdNum; i++) // 값입력
{
cin >> score[i];
sum += score[i];
}
average = (double)sum / stdNum; // 평균 구하기
for (int i = 0; i < stdNum; i++)
{
if (average < score[i]) // 학생점수가 평균보다 클떄 경우
stdCnt++;
}
stdRatio = ((double)stdCnt / stdNum)*100; // 백분율 구하기
cout.precision(3); // 소수 셋쨰짜리까지 출력 함수
cout << fixed << stdRatio << "%"<< endl; // 최종 출력부분
}
return 0;
}
실행 결과
'Algorithm (알고리즘) > 백준 문제' 카테고리의 다른 글
백준 2920번: 음계 (C++) (0) | 2018.11.15 |
---|---|
백준 8958번: OX퀴즈 (C++) (0) | 2018.11.13 |
백준 2577번: 숫자의 개수 (C++) (0) | 2018.11.12 |
백준 1152번: 단어의 개수 (C++) (0) | 2018.11.11 |
백준 1110번: 더하기 사이클 (C++) (0) | 2018.11.10 |