终于走上重拾C++之路了,很激动,希望自己能保持良好的心态,学好它。
看的教材是钱能的《C++程序设计教程》,感觉不错,点得很透。
其中有这么一题:
定义一个数组,分别为:6,3,7,1,4,8,2,9,11,5。请创建一个向量,把数组的初值赋给它,然后对该向量求标准差(均方差)。
先确实一下算法,求标准差可以这样:
1、求出平均数;
2、 然后算出每个数和平均数的差的绝对值的平方;
3、平方相加;再开方。
代码如下:
int arr[]={6,3,7,1,4,8,2,9,11,5};
vector<int> list(arr,arr+10);
int pj = 0; //平均数
int count=0; //总数
double pfcount = 0;//平方和
for(int i=0;i<list.size();i++)
count+=list.at(i);
pj=count/list.size();
for(int i=0;i<list.size();i++){
int cha = abs(list.at(i)-pj);
cout<<"数"<<(i+1)<<":"<<list.at(i)<<" 差的绝对值:" << cha<<endl;
pfcount+=pow((double)cha,2); //离差平方和
}
pfcount=pfcount/list.size(); //离差平方和平均
cout<<"平均数:"<<pj<<endl;
cout<<"标准差:"<<sqrt(pfcount)<<endl;