본문 바로가기

Theory/ControlTheory

[C/C++] 배열을 사용하지 않고 평균 구하기

2월1일에 다리가 부러진 후... 이제 겨우 8주가 지났네요. 16주 진단이니까... 아직 8주가 더 남았습니다.ㅠㅠ 단지 다리하나가 더 부러졌을 뿐인데도 많은 부분이 불편하네요..ㅠㅠ 특히 그 좋아하는 블로그 활동도 못하고, 아름다운 알콜 습취도 못하네요...ㅠㅠ

그러다 문득, 한가지 떠로는 생각이 있어서, 배열없이 평균을 구하는 것에 대해 이야기를 할까합니다.^^ 보통 C/C++를 공부하다보면 배열을 배우는 단계에서 배열의 합과 평균을 구하는 예제를 통해 배열을 배우게 되는데요. 이번엔 배열을 구하지 않고 평균을 구하는 예제를 다뤄볼까 합니다.

먼저 평균을 구하기 위해 입력되는 n 번째 숫자를

 
이라고 하구요. n 번째까지의 평균을


이라고 하죠.

그러면, 평균은 다들 아는데로


n번째까지의 합에서 갯수를 나누게 됩니다. 이 식을 살짝 변형하면


n번째 숫자와 (n-1)번째까지의 합과의 합에서 전체 개수(n)를 나누게 되죠 이때... (n-1)번째까지의 합이라는 것은


이렇게 다시 (n-1)번째까지의 평균에 (n-1)을 곱해도 됩니다. 이제 n번째까지의 평균은


이렇게, 이전 평균에 (n-1)을 곱하고, 현재 숫자를 더해서 n으로 나누면 된다는 것을 알 수 있죠. 이 마지막 수식을 C로 바꾸면 되겠네요^^


음... //calculate sum and average 라고 주석을 친 부분을 보면

sum += inputNum 

은 누적해서 입력한 숫자를 저장하고, 그 다음 식이 결론이죠. 좌변의 변수는 C 문법상 항상 이전 값이니까

average = ( (n-1)*average + inputNum )/n;

이거면 끝인거죠. 나머진 출력하는 부분과 입력받는 부분이니까요. 이렇게 꾸민 결과를 확인해보면


입력을 가할때마다, 평균값을 계산해 주고 있다는 것을 확인할 수 있습니다.^^


반응형