爲C++練習建立統計程序,我從文件中提取主題的年齡並將它們存儲在deque<int> ages
中。然而,當我試圖獲得一個標準偏差,我遇到了一個錯誤:無法計算標準偏差
template <class U> typename U::value_type mean(U begin,U end){
typedef typename U::value_type res_type;
res_type sum=res_type();
size_t count=0;
for(U pos=begin;pos!=end;++pos){
sum+=*pos;
++count;
}
return sum/count;
}
template <typename T>
double stan_dev(deque<T>&d){
double dev_sum=0,dev,dev_sqr,st_dev;
double mn=mean(d.begin(),d.end());
for(int it=0;it<d.size();++it){
T val=d[it];
dev= val-mn;
dev_sqr = dev*dev;
dev_sum+=dev_sqr;
cout<<"\n Deviation at for age # "<<d[it]<<" is "<<dev;
cout<<"\n Deviation squared for age # " <<d[it]<<" is "<<dev_sqr;
cout<<"\n Summing up so far .. "<<dev_sum;
}
st_dev=sqrt((dev_sum/d.size()));
return st_dev;
}
只是給相關部分在這裏,cout << stan_dev(ages)
和程序掛起。請幫忙。
函數mean()是如何定義的?你的問題也可能在那裏。您是否使用過調試器來闖入該程序並查看最終結果? – 2012-02-20 12:35:44
這裏是我的平均功能,並沒有我從來沒有使用過調試器,現在就開始了,順便說一句,我用dev C++。 模板 類型名稱ü:: VALUE_TYPE均值(U開始,U端){ 的typedef類型名稱ü:: VALUE_TYPE res_type; res_type sum = res_type(); size_t count = 0; (U pos = begin; pos!= end; ++ pos) sum + = * pos; ++ count; } 返回總數/計數; } –
2012-02-20 12:41:15
我已經將'mean()'的定義添加到問題中了,因爲它更易於閱讀。 (你也可以編輯你自己的問題,以防萬一你不知道。) – 2012-02-20 12:48:23