Хорошо, поэтому, когда я запускаю этот код, я получаю, что моя сумма равна 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;
}
c++
1
Tyler Kelly 5 Апр 2014 в 22:54
Размещенный вами код не компилируется из-за того, что не все переменные определены, отсутствуют включения и main. Я не уверен, что вы получите соответствующую помощь с этим. Также было бы здорово, если бы вы могли кратко объяснить, что вы ожидаете от этого кода.
 – 
Benjamin Bannier
5 Апр 2014 в 23:09

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

Надеюсь, это помогло ...

1
deb_rider 5 Апр 2014 в 23:16
Потрясающе! Большое спасибо! Я до сих пор не совсем понимаю, почему total = validateNumber()
 – 
Tyler Kelly
5 Апр 2014 в 23:24
Если num нужно изменить внутри функции, его следует либо вернуть, либо передать по ссылке.
 – 
Thomas Matthews
5 Апр 2014 в 23:56
Прочтите о local variables из книги. Здесь, если это не передано в качестве ссылки, тогда total используется в main(), а total в этой функции - совершенно другая переменная...: )
 – 
deb_rider
6 Апр 2014 в 00:36

Вы предполагаете, что вызов функции validateNumber(num,score,total); в строке 5 вычислит общую сумму? Вы должны вызвать функцию из функции main и присвоить возвращаемое значение переменной (например, total).

0
Sufian Latif 5 Апр 2014 в 23:02
Почему же total не является переменной? Я не уверен, как бы мне лучше объявить его основным... нужно ли мне помещать цикл for... в основной?
 – 
Tyler Kelly
5 Апр 2014 в 23:06