Хорошо, поэтому, когда я запускаю этот код, я получаю, что моя сумма равна 0, и это портит мои средние и оценки. Я не уверен, что я делаю неправильно, так как функция total + = scores находится там, где она должна быть, но она до сих пор не складывает баллы.
int validateNumber(int, int, int);
В функции main()
int num, score, total = 0;
А также
validateNumber(num, score, total);
И определение
int validateNumber(int num, int score, int total) {
while (num < 1 || num > 4) {
cout << over3 << num << " is not between 1 and 4! Try again: ";
cin >> num;
}
system("CLS");
for (int i = 1; i <= num; i++) {
cout << over3 << "Enter score " << i << ": " << endl;
cout << over3 << "Enter a value from 0 to 100: ";
cin >> score;
while (score < 0 || score > 100) {
cout << over3 << score
<< " is not between 0 and 100! Renter the score: " << i << ": ";
cin >> score;
}
total += score;
}
return total;
}
2 ответа
Если вы хотите реализовать функцию validate()
, как здесь,
validateNumber(num,score,total);
Вы можете сделать это void
и передать переменную total
в качестве ссылки. например,
void validateNumber(int num, int score, int &total) {
while (num < 1 || num > 4) {
cout << over3 << num << " is not between 1 and 4! Try again: ";
cin >> num;
}
system("CLS");
for (int i = 1; i <= num; i++) {
cout << over3 << "Enter score " << i << ": " << endl;
cout << over3 << "Enter a value from 0 to 100: ";
cin >> score;
while (score < 0 || score > 100) {
cout << over3 << score
<< " is not between 0 and 100! Renter the score: " << i << ": ";
cin >> score;
}
total += score;
}
}
А остальное было бы так же ... Иначе я бы не использовал в этом случае 3 аргумента. например,
int validateNumber(int num) {
int total=0,score;
while (num < 1 || num > 4) {
cout << over3 << num << " is not between 1 and 4! Try again: ";
cin >> num;
}
system("CLS");
for (int i = 1; i <= num; i++) {
cout << over3 << "Enter score " << i << ": " << endl;
cout << over3 << "Enter a value from 0 to 100: ";
cin >> score;
while (score < 0 || score > 100) {
cout << over3 << score
<< " is not between 0 and 100! Renter the score: " << i << ": ";
cin >> score;
}
total += score;
}
return total;
}
И звонок:
int num, total;
...
total=validateNumber(num);
Надеюсь, это помогло ...
num
нужно изменить внутри функции, его следует либо вернуть, либо передать по ссылке.
local variables
из книги. Здесь, если это не передано в качестве ссылки, тогда total
используется в main()
, а total
в этой функции - совершенно другая переменная...: )
Вы предполагаете, что вызов функции validateNumber(num,score,total);
в строке 5 вычислит общую сумму? Вы должны вызвать функцию из функции main
и присвоить возвращаемое значение переменной (например, total
).
Похожие вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.
main
. Я не уверен, что вы получите соответствующую помощь с этим. Также было бы здорово, если бы вы могли кратко объяснить, что вы ожидаете от этого кода.