Вы никогда не используете return(Value);
.Если вы хотите использовать новый value
без использования return
, вы должны передать ссылку, например, int EvenOrOdd(int Number, int& Value)
(или передать обычный старый указатель).Аналогично с CalculateSum(Number, Sum);
Почему?Если вы не передадите ссылку или указатель, параметры передаются по значению, и функция получает копию исходной переменной.Любые изменения, внесенные в копию внутри функции, теряются, когда функция возвращается.(например, вызывающая сторона не может видеть изменения).
Вы решаете проблему одним из двух способов.(1) использовать возврат, чтобы получить значение, возвращаемое функцией, например,
Value = EvenOrOdd(Number, Value);
или (2) передать ссылку на значение, например,
int EvenOrOdd(int Number, int& Value)
{
if (Number % 2 == 0)
Value = 1;
return(Value);
}
Передавссылка, любые изменения, сделанные в Value
в функции, автоматически вносятся в исходную переменную обратно в вызывающую программу, поскольку ссылка является просто псевдонимом для исходной переменной.То же самое относится к использованию Sum
в CalculateSum(Number, Sum);
Пример использования ссылок
#include <iostream>
using namespace std;
int EvenOrOdd(int Number, int& Value)
{
if (Number % 2 == 0)
Value = 1;
return(Value);
}
int CalculateSum(int Number, int& Sum)
{
for (int i = 1; i <= Number; i++)
Sum = Sum + i;
return(Sum);
}
int main (void)
{
int Number = 0, Value = 0, Sum = 0;
cout << "Please enter a positive integer: ";
cin >> Number;
while (Number >= 1 && Number <= 100)
{
EvenOrOdd(Number, Value);
if (Value == 1)
cout << Number << " is Even";
else
cout << Number << " is Odd";
CalculateSum(Number, Sum);
cout << "\n" << Sum << " is the sum of the first " << Number;
cout << "\nPlease enter a positive integer: ";
cin >> Number;
}
}
( примечание: Я использовалсоответствующий вызов main()
выше - см. ниже)
Вы также используете несоответствующий вызов main()
.Соответствующие вызовы: int main (void)
или int main (int argc, char **argv)
(хотя argc
и argv
могут быть названы как угодно. Если вы используете несоответствующую встроенную систему, для которой требуется void main()
, то все в порядке, в противном случае вам нужно исправитьэто.