Так что я немного ржав в своих навыках программирования и не имею никакого реального опыта в мире, кроме классов колледжа, которые я взял в прошлом. Я работаю над программой для класса, но сталкиваюсь с проблемой, я не могу понять, как использовать значение переменной внутри цикла For
вне цикла. Вот код, я ссылка:Как использовать переменную из цикла For вне цикла в C++?
#include "iostream"
using namespace std;
int want, have, need;
int counter = 0;
char response, cont;
int diff(int want, int have);
int main(){
cout << "Welcome!\n";
cout << "This program will help you reach your money saving goals!\n";
cout << "Would you like to use this program? (y/n)\n";
cin >> response;
while (response == 'y'){
cout << "Please enter all amounts in whole dollars only!\n";
cout << "Please enter the amount of money you would like to have saved: $";
cin >> want;
cout << "\nPlease enter the amount of money you currently have saved: $";
cin >> have;
if (have >= want){
cout << "You have already reached or exceeded your goal, this program will not be able to help you!\n";
system("Pause");
return 0;
}
cout << "\nYou need to save $" << diff(want, have) << " more money to reach your goal!\n";
cout << "Would you like me to help you with a savings plan?";
cin >> cont;
while (cont == 'y'){
int menu;
cout << "Please select from the following options: \n";
cout << "1 - Daily Saving Plan\n";
cout << "2 - Weekly Saving Plan\n";
cout << "3 - Monthly Saving Plan\n";
cout << "Enter the number associated with your choice: \n";
cin >> menu;
switch (menu){
case 1: {
int daily;
cout << "You have chosen the Daily Savings Plan\n";
cout << "How much money can you save every day? $";
cin >> daily;
for (int x = daily; x < need; x++){
daily = daily + daily;
counter++;
}
cout << "\nIt will take you " << counter << " days to reach your goal!\n";
break;
}
case 2: {
int weekly;
cout << "You have chosen the Weekly Savings Plan\n";
cout << "How much money can you save every week? $";
cin >> weekly;
for (int x = weekly; x < need; x++){
counter++;
}
cout << "\nIt will take you " << counter << " weeks to meet your goal!\n";
break;
}
case 3: {
int monthly;
cout << "You have chosen the Monthly Savings Plan\n";
cout << "How much money can you save every month? $";
cin >> monthly;
for (int x = monthly; x < need; x++){
monthly = monthly + monthly;
counter++;
}
cout << "\nIt will take you " << counter << " months to reach your goal!\n";
break;
}
default: cout << "You made an invalid selection";
cout << "Would you like to look at a different saving plan? (y/n)\n";
cin >> cont;
}
}
}
}
int diff(int want, int have){
return want - have;
}
Так что, когда я запускаю программу, все работает нормально, но значение счетчика всегда отображаются как «0» в заключительном cout
заявления.
Я понимаю, почему это делается, я думаю .. и это связано с объявлением «int counter = 0» за пределами цикла, поэтому я предполагаю, что он возвращается к этому значению после выхода цикла.
Если я не инициирую переменную счетчика, я получаю сообщение об ошибке, и если я объявляю значение внутри цикла, я получаю сообщение об ошибке, пытающееся использовать его в инструкции cout, как указано выше.
Я даже не уверен, что мой цикл цикла структурирован правильно ... в основном я хочу, чтобы он добавлял к себе еженедельную переменную до x = need
. Я также хочу, чтобы понять, сколько итераций требуется для этого, а затем выводить его как количество недель. Надеюсь, что все имеет смысл; всякая помощь приветствуется.
почтовый индекс, который воспроизводит проблему. –
Нет, 'counter' не вернется к нулю после цикла. Если он равен нулю, значит, он никогда не увеличивался. Перед началом цикла проверьте значения 'weekly' и' need'. –
для начала, я бы попытался объявить счетчик внешнего переключателя в начале функции. перед запуском цикла должна быть инициализация: counter = 0; – user3621602