Стандартное отклонение c ++ Формула рекомендации - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть это задание, в котором я покажу подсказку для него:

Напишите программу, которая считывает данные набора результатов теста от пользователя. (Результаты теста должны быть введены в десятичной форме, чтобы представить процентную оценку). Как только пользователь завершит ввод результатов теста (ввод -1 будет означать конец ввода), распечатайте количество введенных тестов, среднее значение тестов и стандартное отклонение. Используйте следующую формулу (метод Уэлфорда) для расчета стандартного отклонения: (Стандартная формула Девиатона)

Вы можете вычислить эту величину, отслеживая количество (количество тестов), сумму и сумма квадратов при обработке входных значений. Примечание. Хотя существуют и другие способы расчета стандартного отклонения, используйте этот метод. Этот метод используется, поскольку он требует только один проход данных. Не используйте массивы или векторы.

Теперь приведенный ниже код - это то, что я имею до сих пор. В терминале я получаю неправильные цифры для среднего и стандартного. Выходы отклонения (Терминальный выход) . Что-то не так с моей математикой? Любая помощь приветствуется. РЕДАКТИРОВАТЬ: Вот данные, которые я использую и ожидаемые результаты, которые я должен получить:

 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;
}

1 Ответ

4 голосов
/ 11 февраля 2020

Вы написали функцию, поэтому «-1» является частью вычисления, а не тем, что вы хотите. Я мог бы исправить это для вас, но я думаю, что вы можете взять это из этой подсказки. И теперь, когда я снова посмотрю, первое число НЕ является частью вашего расчета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...