c++ - 我的标准偏差程序的输出问题

标签 c++ visual-studio-2010

我为家庭作业制作的程序出现严重的输出问题。下面是我用来计算用户给定的一组数字的均值和标准差的代码,直到达到标志值 -1。我不允许使用数组。我应该使用我的教授给出的公式(对于标准开发部分)是 ((sum (xi)^n) - ((sum xi) ^2/n)/(n-1)) xi is x sub i,这是每个输入。我在我的 macbook pro 上的 win7 x64 虚拟机上使用 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;

}

screen capture

在此先感谢您收到的任何帮助

最佳答案

公式中的变量n

((sum (xi)^n) - ((sum xi) ^2/ n) /(n-1))

和函数中的变量'n'

sum_unkown_vars()

不一样。公式中的 n 表示元素的数量,这由程序中的变量“i”定义。请先更正此问题。

另外,变量的数量应该是 i+1,或者您应该在初始读取后立即增加 i。

我认为代码中还有更多错误。例如,您不从函数返回标准偏差,您使用整数返回标准偏差等。请使用调试器自行调试其余部分。请对这些值做出预期并在调试器中进行交叉检查。

关于c++ - 我的标准偏差程序的输出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11528123/

相关文章:

c++ - easypng替代/ super 简单的数据可视化库(c++)

c++ - 如何使用具有 C++0x 特性的 autoconf

visual-studio-2010 - 我可以让 Visual Studio 停止任务代码中未处理的异常吗?

wpf - WPF 中的 .NET Framework 4 不显示位图效果

c# - 2 个模型选择字符串

visual-studio-2010 - T4 "Compiling transformation: An assembly with the same identity ' ' has already been imported. Try removing one of the duplicate references."?

c++ - 如何在MFC 的不同 View 中相互调用函数?

c++ - std::chrono::duration::zero() 的目的是什么

C++ char* x = fgets() 不工作

c++ - 引发导致代码崩溃,而不仅仅是退出