2014-02-20 4 views
1

так вот мой код (раздели из заголовков, потому что это irrerevelant.)Как найти среднее значение данных, вводимых пользователем

int main() { 

float program = 0; 
float scores = 0; 
float test = 0; 
float testScores = 0; 
float e = 1; 
float exam = 0; 
float programAverage = 0; 

cout << "Enter the number of assignments that were graded: "; 
cin >> program; 

for (int i = 1; i <= program; i++){ 
    cout << "Enter the score for assignment # " << i <<": "; cin >> scores; 

} 
    cout << "Enter the number of test: "; 
    cin >> test; 

for (int e = 1; e <= test; e++){ 
    cout << "Enter the score for test # " << e << ": "; cin >> testScores; 
} 
    cout << "Enter the final exam score: "; 
    cin >> exam; 

    programAverage = (scores/program); 
    cout << "Program Average: " << programAverage << endl; 
} 

последняя часть у меня возникли проблемы, потому что каждый раз, когда я скомпилировать свою программу, компилятор просто запоминает последний введенный пользователем номер и не усваивает его. Как я могу заставить его добавлять все номера ввода пользователя вместе, а затем в среднем?

+2

Подсказка, создайте другую переменную и используйте ее для суммирования всех входных данных 'score' в цикле« Ввести счет ... ». –

+0

Я очень новичок в кодировании, не могли бы вы привести мне пример или что-то еще? – user3320545

+0

'float total_of scores = 0;' затем внутри вашего цикла, после чтения 'score',' total_of_scores + = score; '. Как и вы, вы постоянно переписываете предыдущие «оценки» и «testScores» с последующими значениями, не используя фактическое значение предыдущего. Если вам нужно было поддерживать оценки, чтобы вы могли рассчитать значение stddev после того, как все они будут прочитаны, вы можете «push_back» их на «вектор», а затем итерации, чтобы получить к ним доступ ... это будет хорошим «вторым этапом» для вы узнаете о C++. –

ответ

1
int main() { 
float program = 0; 
float scores = 0; 
float test = 0; 
float testScores = 0; 
float e = 1; 
float exam = 0; 
float programAverage = 0; 
float scoresSum = 0; // variable that adds up all the input scores 

cout << "Enter the number of assignments that were graded: "; 
cin >> program; 

for (int i = 1; i <= program; i++){ 
    cout << "Enter the score for assignment # " << i <<": "; cin >> scores; 

    scoresSum += scores; // adds up all the scores 
} 



    cout << "Enter the number of test: "; 
    cin >> test; 

for (int e = 1; e <= test; e++){ 
    cout << "Enter the score for test # " << e << ": "; cin >> testScores; 
} 
    cout << "Enter the final exam score: "; 
    cin >> exam; 

    programAverage = (scoresSum/program); // divide the total score out of program number 
    cout << "Program Average: " << programAverage << endl; 
} 

Таким образом, проблема в том, что вы не сложите входные баллы. Переменная «score» имеет только значение последнего входного балла. Вы должны настроить переменную, чтобы суммировать все входные оценки до сих пор, такие как scoresSum в коде. И составьте счет каждый раз, когда счет отправлен.

Вы можете легко найти разницу между вашим кодом и моим, посмотрев на строку с комментарием.

+0

oops .. Я отредактирую его. – kimsy

+0

Думал, что я сделал это ... в любом случае спасибо :) – kimsy

1
float _sum=0; 

for (int i = 1; i <= program; i++){ 

    cout << "Enter the score for assignment # " << i <<": "; cin >> scores; 

_sum+=i; 

} 

    programAverage = (_sum/program); 

    cout << "Program Average: " << programAverage << endl; 
+0

-1 Вы дали ему рыбу, когда ему явно нужно научиться ловить рыбу. –

+0

Нет смысла понижать голос. –

+1

@ DougT. так и вы, в конце концов ... хотя и с большим количеством объяснений.Вопрос в том, является ли необходимость самоочевидной после того, как он увидит код. +1 от меня. –

0

Ну да из-за этого цикла, scores всегда имеет последнее введенное значение:

for (int i = 1; i <= program; i++){ 
    cout << "Enter the score for assignment # " << i <<": "; cin >> scores; 
} 

В среднем определяется как сумма , деленное на количество экземпляров. Вы не суммируете, вы просто продолжаете переписывать «баллы» с последним значением чтения, когда вы делаете cin >> scores. Поэтому проблему можно переформулировать как «Как я могу суммировать все числа, в которые пользователь ввел?» Компьютеры делают точно, что вы им рассказываете, и вам нужно выяснить, как точно сообщите, чтобы он суммировал все введенные scores.

Хорошо, как бы вы это сделали в реальной жизни? Вы бы сохранили текущую оценку всех баллов, возможно, добавив их с помощью калькулятора. Вы бы инициализировать счетчик:

double sum = 0.0; 

Затем после строки для `соиЬ < <«Введите счет ...»Вы добавляете просуммировать:

sum = sum + scores; 

Или C++ имеет удобную сокращенную запись

sum += scores 
Смежные вопросы