Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 숫자 배열의 조화 평균 계산하기

조화 평균이란?

자연수 배열이 주어졌을 때, 해당 숫자들의 조화 평균(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