C++功能不起作用

C++ function wont work

本文关键字:不起作用 功能 C++      更新时间:2023-10-16

我需要计算读取的 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 SDn";
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);}
for(int i = 0; i < 15;)
{sum2 = pow((array[i]-mean),2) + sum2;
}

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

for(int i = 0; i < 15; i++)

一些可能有助于改善您的风格的备注:

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