조화 평균이란?
자연수 배열이 주어졌을 때, 해당 숫자들의 조화 평균(harmonic mean)을 계산하여 출력하는 프로그램을 만들어 보겠습니다.
조화 평균은 각 값의 역수(reciprocal)를 취한 뒤, 그 역수들의 산술 평균을 구하고 다시 역수를 취한 값입니다. 주로 속도나 비율처럼 서로 역수 관계에 있는 데이터의 평균을 구할 때 유용하게 활용됩니다.
$$Harmonic\: Mean=\frac{n}{\frac{1}{a}+\frac{1}{b}+\frac{1}{c}+...}$$
여기서 n은 주어진 요소의 총 개수이며, a, b, c...는 배열에 실제 저장된 요소들을 의미합니다.
조화 평균을 계산하는 단계는 다음과 같습니다 −
각 요소의 역수를 구합니다
구한 모든 역수를 더합니다
배열의 전체 요소 개수를 역수들의 합으로 나눕니다
입력
arr[] = {2.0, 3.4, 5.3, 2.1}출력
Harmonic mean is: 2.74163
입력
arr[] = {13.5, 14.5, 14.8, 15.2, 16.1}출력
Harmonic mean is : 14.7707
알고리즘
시작
단계 1→ 숫자들의 조화 평균을 계산하는 함수 선언
float harmonic_mean(float arr[], int size)
float sum = 0 선언
반복문 For int i = 0 and i < size and i++
sum = sum + (float)1 / arr[i] 설정
종료
return (float)size/sum 반환
단계 2→ main() 함수에서
float arr[] = {2.0, 3.4, 5.3, 2.1} 선언
int size = sizeof(arr) / sizeof(arr[0]) 선언
harmonic_mean(arr, size) 호출
종료
예제 코드
#include <bits/stdc++.h>
using namespace std;
//조화 평균 계산
float harmonic_mean(float arr[], int size){
float sum = 0;
for (int i = 0; i < size; i++)
sum = sum + (float)1 / arr[i];
return (float)size/sum;
}
int main(){
float arr[] = {2.0, 3.4, 5.3, 2.1};
int size = sizeof(arr) / sizeof(arr[0]);
cout<<"Harmonic mean is : "<<harmonic_mean(arr, size);
return 0;
}
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과가 생성됩니다 −
Harmonic mean is : 2.74163