无法计算数据的标准偏差 P> >构建一个C++程序的统计程序,将文件中的主题提取出来,存储在 DEGEAGE < /代码>中。然而,当我试图获得标准偏差时,我遇到了一个错误: 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; } 模板类型名称U::值\类型平均值(U开始,U结束){ typedef typename U::value_type res_type; res_type sum=res_type(); 大小\u t计数=0; 用于(U位置=开始;位置!=结束;++pos){ 总和+=*pos; ++计数; } 返回和/计数; } 样板 双标准开发(设计与开发){ 双偏差总和=0,偏差,偏差sqr,标准偏差; 双mn=平均值(d.开始(),d.结束()); 对于(int it=0;it

无法计算数据的标准偏差 P> >构建一个C++程序的统计程序,将文件中的主题提取出来,存储在 DEGEAGE < /代码>中。然而,当我试图获得标准偏差时,我遇到了一个错误: 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; } 模板类型名称U::值\类型平均值(U开始,U结束){ typedef typename U::value_type res_type; res_type sum=res_type(); 大小\u t计数=0; 用于(U位置=开始;位置!=结束;++pos){ 总和+=*pos; ++计数; } 返回和/计数; } 样板 双标准开发(设计与开发){ 双偏差总和=0,偏差,偏差sqr,标准偏差; 双mn=平均值(d.开始(),d.结束()); 对于(int it=0;it,c++,math,statistics,deque,C++,Math,Statistics,Deque,您确定问题出在stan_dev()而不是mean() 使用以下拼凑在一起的mean() 模板 双平均值(T开始,T结束) { 双和=0,计数=0; while(开始!=结束) { 总和+=*开始++; 计数++; } 返回和/计数; } 这是我的节目 编辑:使用你版本的mean(),这个程序也适用于我。你在调用什么参数?你确定挂起在stan_dev()?(使用调试器或合适的调试输出找出。)你的函数mean()如何你的问题可能也在那里。你使用过调试器来打断程序并看到你的结果吗?这是我的平均函数,

您确定问题出在
stan_dev()
而不是
mean()

使用以下拼凑在一起的
mean()

模板
双平均值(T开始,T结束)
{
双和=0,计数=0;
while(开始!=结束)
{
总和+=*开始++;
计数++;
}
返回和/计数;
}
这是我的节目


编辑:使用你版本的
mean()
,这个程序也适用于我。你在调用什么参数?你确定挂起在
stan_dev()
?(使用调试器或合适的调试输出找出。)

你的函数mean()如何你的问题可能也在那里。你使用过调试器来打断程序并看到你的结果吗?这是我的平均函数,而且我从来没有使用过调试器,现在就开始,顺便说一下,我使用DEV C++。模板类型名称u::{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;}返回和/计数;}我已经添加了
mean()的定义
因为这个问题更容易阅读。(如果你不知道,你也可以编辑你自己的问题。)我没有看到任何检查
d.size()>0
以防止
mean()
stan\u dev()内部被零除。你确定这不是问题吗?<代码>返回和计数;< /C>将执行<代码> STD::DeQue/Cube >,因为<<代码>和> />代码>和<代码>计数>代码>将是整数。谢谢马丁,我将花更多时间在它上,也许会用调试器进行实验。你能对IDE提出什么建议吗?我使用DEV C++,但是看来outdated@AlterEgo:请在此处尝试:
template <typename T>
double mean(T begin, T end)
{
    double sum=0, count=0;
    while(begin!=end)
    {
        sum+=*begin++;
        count++;
    }

    return sum/count;
}