天天看點

求平均值

     求平均值的方法很多,将所有的和相加除以個數就是平均值了。還有去最大和最小值在求平均值的方法也是不少,下面就是我覺得不錯的一種,将其記錄起來:

   這種辦法是将說有的資料全部排列起來,去掉頭和尾巴,再求平均值。

   #define buf_size  8   //設定緩沖區的大小

   unsigned char data_buf[buf_size];//定義緩沖區

void array_up(unsigned char *pos,unsigned char num)

    unsigned char i,j;

    unsigned int pos_temp;

    for(i=0; i<(num-1); i++)

   {

        for(j=i+1; j<num; j++)

       {

           if(pos[j]<pos[i])

           { 

 pos_temp = pos[j];

 pos[j]   = pos[i];

 pos[i]   = pos_temp;

            } 

        }

    }  

}

unsigned char average_value(unsigned char data)

{  

    unsigned char  i;

    unsigned int point;

    data_ buf[7]= data;    //将最大值和最小值改為輸入值       

    data_uf[0] = data; 

    array_up(data_buf,buf_size);         //數組排序

//*****除去最大兩個數和最小兩個數取平均值**************

    point = data_buf[2];

    for(i=3; i< (buf_size - 2) ; i++)

    point = point + data_buf[i];

    point=point /(buf_size-4);

    return (unsigned char)point;

//******************************************************

 }