C ++函数不起作用

时间:2013-11-05 15:51:24

标签: c++ function

我需要计算读取的15个数字的方差和标准差。我不知道为什么但功能不会执行,控制台只是闪烁。有人可以解释一下问题是什么,谢谢。

 #include <iostream>
 using namespace std;

void stats(int array[], double& var, double& sd);

int main ()
{
int array[15];
double var = 0, sd = 0;
cout << "Please enter 15 numbers to calculate var and SD\n";
for(int i = 0; i < 15; i++)
{
    cout << "Enter number: ";
    cin >> array[i];
}

stats(array,var,sd);

cout << "Numbers entered are: ";
for(int i = 0; i < 15; i++)
{
    cout << array[i] << " ";
}

cout << "Variance is: " << var << endl;
cout << "Standard deviation is: " << sd << endl;
}

功能定义

void stats(int array[],double& var, double& sd)
{
int sum = 0;
double sum2 = 0;
double mean = 0;

for(int i = 0; i < 15; i++)
{sum = sum + array[i];
}

mean = sum/15;

for(int i = 0; i < 15;)
{sum2 = pow((array[i]-mean),2) + sum2;
}

var = sum2/15;
sd = pow(var,0.5);}

2 个答案:

答案 0 :(得分:6)

for(int i = 0; i < 15;)
{sum2 = pow((array[i]-mean),2) + sum2;
}

该循环从不递增i,因此它永远运行。你在那里错过了i++,所以它应该像

一样开始
for(int i = 0; i < 15; i++)

答案 1 :(得分:1)

可能有助于改善风格的一些评论:

  • 如果你想摆脱硬编码15,请使用向量而不是数组push_back来自cin
  • 即使对于整数它没有任何区别,比++i更好i++(对于迭代器,它可能会在性能方面产生影响)
  • 您可以使用std::accumulate
  • 对向量的所有元素求和
  • pow将某些东西提升到2的幂是稍微低效,更好的是将数字乘以其自身
  • main应该返回0