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/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;
이거면 끝인거죠. 나머진 출력하는 부분과 입력받는 부분이니까요. 이렇게 꾸민 결과를 확인해보면
입력을 가할때마다, 평균값을 계산해 주고 있다는 것을 확인할 수 있습니다.^^
average = ( (n-1)*average + inputNum )/n;
이거면 끝인거죠. 나머진 출력하는 부분과 입력받는 부분이니까요. 이렇게 꾸민 결과를 확인해보면
입력을 가할때마다, 평균값을 계산해 주고 있다는 것을 확인할 수 있습니다.^^
반응형
'Theory > ControlTheory' 카테고리의 다른 글
정방향 기구학(forward kinematics)의 기초와 Two Link Planar 예제 (22) | 2014.11.14 |
---|---|
델타형 병렬 로봇의 역기구학을 단순 기하학적으로 손쉽게 해석해보기 (10) | 2014.04.25 |
저역통과필터와 고역통과필터를 C로 구현 (39) | 2011.06.01 |
안티와인드업 Anti-Windup (15) | 2011.03.15 |
서보제어 Servo Control (8) | 2011.03.14 |
정보를 담고 있는 좌표계에 회전행렬을 적용하는 방법 (20) | 2011.01.18 |
회전형 역진자 시스템의 동역학 Rotary Inverted Pendulum (14) | 2010.12.27 |