【问题标题】:Standard Deviation c++ Formula advice标准差 c++ 公式建议
【发布时间】: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


【解决方案1】:

您已经编写了函数,因此“-1”是计算的一部分,这不是您想要的。我可以为你修好它,但我认为你可以从那个提示中得到它。现在我再看一遍,第一个数字不是你计算的一部分。

【讨论】:

  • 作为一个建议,调试器几乎会立即将这两个问题抛给您。鉴于您有标签“windows”,我假设您使用的是 DevStudio。它有一个出色的调试器。 . .让它成为你的朋友。
猜你喜欢
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
相关资源
最近更新 更多