我无法看到我编写的代码中的输出。我试图从文件中计算一组数字的均值和标准差。我很遗憾问题是什么,我不知道我的代码是否正确,直到我能看到输出。这就是我到目前为止所拥有的:
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
int main()
{
// Declare Variables
int n;
int xi;
int sdv;
int sum;
int sum2;
int sum3;
int mean;
// Declare and open input files
ifstream inData;
inData.open("score.dat");
if (!inData) // Incorrect Files
{
cout << "Cannot open input file." << endl;
return 1;
}
// Initialize variables and output
inData >> xi;
n = 0;
sum = 0;
sum3 = 0;
sdv = 0;
mean = 0;
while (inData)
{
sum += xi;
sum2 = sum * sum;
sum3 += (xi * xi);
mean = sum / n;
sdv = (sum3 - sum2) / (n * (n - 1));
inData >> xi;
}
// Print commands
cout << "The Standard Deviation of the Tests is:" << sdv << endl;
cout << "The Mean of the Tests is: " << mean << endl;
inData.close();
system("pause");
return 0;
}
答案 0 :(得分:0)
运行代码后,我发现了一些错误。您可能没有得到任何输出,因为程序第一次通过行上的while循环崩溃:
mean = sum / n;
由于零除错误。 另一个错误是你不会在循环中增加(增加)n的值,所以你总是只有一个数字。
在循环开始时添加一个n ++将修复
while (inData)
{
n++;
sum += xi;
...
但是当n == 1:
时,你仍然会在sdv上得到零除sdv = (sum3 - sum2) / (1 * (1 - 1));
如果您在分割之前添加条件,它将起作用:
if (n >= 2)
sdv = (sum3 - sum2) / (n * (n - 1));
查看像gdb这样的调试工具来帮助抓住这样的东西。