2015-03-18 1 views
-3

Я начал изучать C++ сегодня, и у меня есть небольшая проблема. Я пытаюсь создать простую программу, которая принимает возраст пользователей , прошу их, чтобы ввести номер, который они хотели бы увеличить свой возраст, а затем выводит сумму этих двух чисел .. здесь:обучение C++ ... компилятор неожиданно повторяет выполнение кода в определенный момент

#include <iostream> 

int getAge() 
{ 
using std::cin; 
using std::cout; 
using std::endl; 

cout << "Enter your age: "; 
int age; 
cin >> age; 
cout << endl; 
cout << "You are " << age << " years old."; 
cout << endl; 
return age; 
} 

int getYearsFromNow() 
{ 
using std::cin; 
using std::cout; 
using std::endl; 

cout << endl; 
cout << "Enter how many years you want to increase yours age by: "; 
int yearsFN; 
cin >> yearsFN; 
cout << endl << "Increasing your age by " << yearsFN << " years..."; 
return yearsFN; 
} 

int main() 
{ 
using std::cout; 
using std::endl; 

getAge(); 
getYearsFromNow(); 

/*int newAge; 
newAge = getAge() + getYearsFromNow(); 
cout << endl << "In " << getYearsFromNow() << " years from now, you will be 
" << newAge; */ 

return 0; 
} 

у меня есть последняя часть основной функции закомментирована для когда компилятор выполняет два вызова в основной функции (getAge() и getYearsFromNow()), затем делает это снова и еще один раз, и только после этого он выполняет м остальную часть кода ..

я не понимаю .. У меня была последняя часть в отдельную функцию, которая только что вернувшийся переменную «NEWAGE», но который работал в тот же ..

+6

Знаете ли вы, что каждый вызов 'getAge()' или 'getYearsFromNow()' запрашивает пользователя? (Это не так, как если бы программа «запомнила» и повторно использовала результаты предыдущих вызовов, если это то, о чем вы думаете.) – ruakh

+0

, так что я могу исправить это, назначив два вызова переменной каждый в главном? @ruakh – l30n1d45

+0

попробовал это, это сработало .. спасибо @ruakh – l30n1d45

ответ

0
int main() 
{ 
    using std::cout; 
    using std::endl; 

    int age = getAge(); // call only once and assign to a variable 
    int years = getYearsFromNow(); // call only once and assign to a variable 

    int newAge; 
    newAge = age + years; 
    cout << endl << "In " << years << " years from now, you will be" << newAge; 

    return 0; 
} 
+0

Не очень полезный ответ. Вы должны объяснить, как ваш код отличается. – Carcigenicate

+0

@Carcigenicate: Я действительно согласен. Я дошел до этого и заметил, что проблема решена в соответствии с комментариями в OP. – djs

1

Как пользователь @ruakh указал, вы вызываете функции getAge() и getYearsFromNow() дважды:

После того, как здесь:

getAge(); 
getYearsFromNow(); 

и снова здесь:

newAge = getAge() + getYearsFromNow(); 

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

Так изменить код на следующее:

int age = getAge(); 
int yearsFromNow = getYearsFromNow(); 
int newAge = age + yearsFromNow; 
cout << endl << "In " << yearsFromNow << " years from now, you will be " << newAge; 

Теперь, что происходит это возвращаемое значение getAge() будет сохранено в переменной age и возвращаемое значение getYearsFromNow() будет сохранено в переменной yearsFromNow. Теперь вы используете эти две переменные в своих расчетах и ​​отображениях.

Смежные вопросы