我正在为我的作业制作一个严重的输出问题。下面是我用来计算用户给出的一组数字的平均值和标准差的代码,直到达到-1的标志值。我不允许使用数组。我应该使用我的教授给出的公式(对于std dev部分),((sum(xi)^ n) - ((sum xi)^ 2 / n)/(n-1))xi是x sub i,每个输入。我在macbook pro上使用win7 x64 vm上的visual studio 2010(怀疑这有什么用,但以防万一)。
下面是代码(后跟错误的屏幕上限)
#include<iostream>
#include <cmath>
using namespace std;
int i;
int sum_unkown_vars();
double std_dev(int sum, int n);
/*double std_dev(int sum, int n)
{
double dev;
dev = sqrt(((pow(sum, 2.0)-(pow(sum, 2.0)/n)))/(n-1));
return dev;
}*/
int sum_unkown_vars()
{
i = 0;
int n;
int sum1 = 0;
int sum_sqd = 0;
double sdev;
cout<<"This part will sum variables given by user until flag value of -1"<<endl;
cout<<"\nNext Variable Please: ";
cin >> n;
while(n != -1)
{
sum_sqd = sum_sqd + n*n;
sum1 = sum1 + n;
i++;
cout<<"\nNext Variable Please: ";
cin >> n;
}
cout <<"\nNumber of variables is "<< i <<endl
<<"Sum of variables is "<< sum1 <<endl;
sdev = sqrt(((sum_sqd*1.0)-(1.0*pow(sum1, 2.0)/n))/(n*1.0-1.0));
cout <<"\nStandard Deviation is "<< sdev << endl;
return sum1;
}
int main()
{
int sum = 0;
int j;
double avg;
double std_dev1;
cout<<"This program will take integers given by the user,"
<<"\nsum them, then find average and standard deviation\n\n";
sum = sum_unkown_vars();
//cout <<"\nPlease enter number of integers previously given: ";
//cin >> j;
avg = sum / (i*1.0);
cout <<"\nAverage is: "<<avg<<endl;
//std_dev1 = std_dev(sum, i);
//cout <<"Standard Deviation is : "<< std_dev1 <<endl;
system("pause");
return 0;
}
提前感谢您收到的任何帮助
答案 0 :(得分:1)
公式中的变量n
((sum (xi)^n) - ((sum xi) ^2/ n) /(n-1))
函数中的变量'n'
sum_unkown_vars()
不一样。公式中的n表示元素的数量,这由程序中的变量“i”定义。请先纠正这个。
此外,变量的数量应该是i + 1,或者你应该在初始读数之后增加i。
我认为代码中还有更多错误。例如,您没有从函数返回标准偏差,您使用整数来返回标准偏差等。请使用调试器自行调试其余部分。请期望值并在调试器中交叉检查。