https://www.acmicpc.net/problem/1546
문제
세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
풀이과정
1) float 함수 사용하기
2)각 배열의 인자 덧셈 = 배열 인자의 합
3) 배열의 최대가 1000이므로 arr[999] 입력된 개수까지만 for 문으로 제어하는 idea
4) 배열의 최댓값 구하기
#include <stdio.h>
int main()
{
float arr[999]; //길이 1000으로 default (float 인자)
int Sub_num; //시험 본 과목의 개수
float Avrg = 0; //평균 (float 인자)
scanf("%d", &Sub_num);
for (int i = 0; i < Sub_num; i++) {
scanf("%f", &arr[i]);
}
// 여기까지하면 , 배열의 인자에 각각의 점수가 대입된다.
//▼ 배열안의 최대값 구하기
float max = 0;
for (int j = 0; j < Sub_num; j++) {
if (arr[j] > max) {
max = arr[j];
}
}
//averge 구하기
float a = 0;
for (int k = 0; k < Sub_num; k++) {
a = (arr[k] * 100) / max;
Avrg = Avrg + a/Sub_num; // a = {(40 + 80 + 60)*100}/80
// a/Sub_num = 225/3 =75
}
printf("%f\n", Avrg);
return 0;
}
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 백준 4344번 해설 (0) | 2021.09.01 |
---|---|
C언어 백준 8959번 (0) | 2021.09.01 |
C언어 백준3052 해설 (0) | 2021.08.31 |
C언어 백준 2577번 해설 (0) | 2021.08.25 |
백준 1110번 C언어 해설 (0) | 2021.08.21 |