본문 바로가기

프로그램/C언어

【C언어】 평균과 표준편차를 구하는 코드 예시

평균과 표준편차를 구하는 C언어 코드 예시입니다. 평균과 표준편차를 main() 밖의 함수 하나로 계산하는 것입니다. 제가 직접 코딩한 것이고 visual studio 2010에서는 정상적으로 작동했습니다. 미처 캡처본을 찍지 못했는데, 바로 복붙하셔서 ctrl + F5로 확인해보시면 될 겁니다. C언어 공부하고있는 초반이시면 보시기 좋은 예시가 될 것 같습니다. 필요한 부분에 조금이나마 //설명문으로 적어놓았습니다.


#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <math.h>     //수학관련 함수를 사용합니다.
#define SIZE 5     //사용자가 5개의 숫자를 입력하게 합니다.

float p_calc_avr_stdev(float num[], int size, float *mean, float *stdev)     //평균*표준편차를 계산하는 함수입니다. 출력이 2개라 포인터를 사용했습니다.
{
     float sum=0;
     float ssum=0;
     float variance;     //이 변수는 '분산'입니다.
     int i;

      for (i=0;i<size;i++)     //우선 전체 합을 구하기 위해 for구문을 작성합니다.
     {
            sum += num[i];
     }
     *mean = sum/size;     //여기서 평균을 구합니다.

      for (i=0;i<size;i++)     //분산을 구하기 위한 전처리 입니다.
     {
            ssum += (num[i] - *mean)*(num[i] - *mean);
     }
     variance = ssum/size;     //여기서 분산을 구합니다.
     *stdev = sqrt(variance);     //여기서 표준편차를 구합니다. sqrt() 때문에 #include <math.h>가 사용된 것입니다.
}

int main()     //여기서부터 메인입니다.
{
     float num[SIZE];     //배열 형식으로 변수지정합니다.
     int i;
     float mean, p_mean, p_stdev;
 
     for (i=0;i<SIZE;i++)     //사용자가 5개의 숫자를 입력하도록 하는 곳입니다.
     {
            printf("%d번째 숫자를 입력하세요 : ", i+1);
            scanf("%f", &num[i]);
     }

     for (i=0;i<SIZE;i++)     //사용자가 입력한 5개를 출력하는 곳입니다.
     {
            printf("%f ", num[i]);
     }
     printf("\n");

     p_calc_avr_stdev(num, SIZE, &p_mean, &p_stdev);     //이 부분이 위에서 작성한 함수가 적용되는 부분입니다. 앰퍼센트(&)로 받아줍니다.

     printf("평균 : %f", p_mean);     //최종 결과를 출력합니다.
     printf("\n표준편차 : %f\n", p_stdev);

     return 0;