Игнорирование неверного ввода из подсчета и среднего - PullRequest
0 голосов
/ 12 ноября 2018

Программа требует, чтобы пользователь вводил числа, а когда закончил, выходил из цикла, вводя отрицательное число. Затем программа выведет среднее число и количество чисел. Отрицательное число должно быть удалено из серии, хотя. Таким образом, если у нас есть три числа и мы выйдем на (четвертое) отрицательное число, среднее будет только из трех чисел и не будет включать отрицательное число. Аккуратно, я как-то сделал эту работу. Теперь мне нужно расширить это, чтобы сделать так, чтобы входные данные были проверены на целочисленное значение и меньше 100 также с использованием булевого уравнения. Именно в этот момент я не могу определить, как исключить ошибочные данные из результатов.

#include <iostream>
#include <iomanip>

using namespace std;

int main ()
{
    float inScore= 1;
    float sumScore= 0.0;
    int scoreCount= 0;
    float avgScore= 0.0;
    bool moreNumbers = true;
    bool notNumbers = true;


    for ( inScore =1; inScore >=1; inScore++)  //for loop some kind of blackmagic not really sure about this right now
    {
        cout << "Please enter grades (enter a negative integer to exit): ";
        cin >> inScore;
        if (!cin || inScore > 100)
        {
            notNumbers = false;  //boolean to ignore non integers or numbers greater than 100
            cin.clear();
            cin.ignore(256, '\n');
            scoreCount--;
            cout << "Invalid number!" << endl;
        }         //something is wrong in this section and I can't get it to ignore the invalid inputs

        else if (inScore < 0)
        {
            moreNumbers = false;
        }         //breaks the loop upon a negative number being entered
        else
            sumScore+=inScore;
        scoreCount++;
    }
    avgScore = (sumScore+=inScore)/(scoreCount-1);
    cout << "Number of Grades: " << scoreCount-1 << endl;  //number of entries
    cout << "Average: " << avgScore << endl;                // average grade except I cannot figure out how to remove negative number from the array

    return 0;
}
...