【发布时间】:2020-05-26 07:58:38
【问题描述】:
我有这个作业,我将在其中显示它的提示:
编写一个程序,从用户那里读取一组测试分数数据。 (测试 分数应以十进制形式输入以表示百分比等级)。一旦用户拥有 输入完考试成绩(输入-1表示输入结束),打印出成绩 输入的测试、测试的平均值和标准偏差。使用以下公式 (Welford 方法)计算标准差: (Standard Deviaton Formula)
您可以通过跟踪计数(测试次数)、总和和总和来计算此数量 处理输入值时的平方数。 注意:虽然还有其他方法可以计算标准差,但请使用此方法。这 使用方法是因为它只需要传递一次数据。不要使用数组或向量。
现在下面的代码是我目前所拥有的。在终端中,我得到了错误的平均值和标准数字。偏差输出(Terminal Output)。我的数学有什么问题吗?任何帮助表示赞赏。编辑:这是我正在使用的数据和我应该得到的预期结果:
1. 67.8
2. 95.6
3. 89.5
4. 76.7
5. 71.3
6. 83.2
7. 90.6
8. 56.1
9. 98.6
10. 85.2
结果:
Number of Test Scores: 10
Average : 81.46
Std. Deviation: 13.39
代码
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double sum = 0;
double sumSq = 0;
double grade = 0;
int numtests = 0;
cout << "Enter the test scores. Once finished, enter -1 to end input.\n";
cin >> grade;
while (grade != -1)
{
cin >> grade;
sum = sum + grade;
sumSq = sumSq + pow(grade, 2);
numtests++;
}
double average = (sum / numtests);
double std = (sumSq - numtests * pow(average, 2) / (numtests - 1));
cout << "The number of scores: " << numtests << "\n";
cout << "Average: " << average << "\n";
cout << "Std. Deviation: " << std << "\n";
return 0;
}
【问题讨论】:
-
请不要发布图片链接。只需复制文本并粘贴到问题中即可。
-
样本数据、预期数字和您得到的数据会很有用。
-
@Shawn 我添加了我正在使用的数据以及我应该进入帖子的答案
-
使用
pow(grade, 2)而不是仅仅使用grade*grade有什么好处吗?
标签: c++ linux windows math computer-science