所以我的编程能力有点生疏,除了我过去参加的大学课程之外,没有任何实际经验。我正在为一个课程开发一个程序,但遇到了一个障碍;我无法弄清楚如何在循环外的For
循环内使用变量的值。这里是我引用的代码:如何使用C++循环外的For循环中的变量?
#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;
}
所以,当我运行程序,一切运行正常,但计数器的值在最后cout
声明始终显示为“0”。
我明白为什么它会这样做,我想..这是因为循环外有“int counter = 0”声明,所以我假设在循环结束后它会回到那个值。
如果我不启动计数器变量,我得到一个错误,并且如果我在循环中声明了值,我会在cout语句中出现一个错误,正如我上面所述。
我甚至不确定我的循环结构是否正确...基本上我希望它自己添加周变量,直到总数为x = need
。我也想捕获它需要多少次迭代,然后输出它作为周数。希望这一切都有道理;任何和所有的帮助表示赞赏。
重现问题的邮政编码。 – 2014-10-08 16:24:22
不,在循环后'counter'不会回零。如果它为零,那是因为它从来没有增加过。在循环开始之前检查'weekly'和'need'的值。 – 2014-10-08 16:24:46
对于初学者,我会尝试在函数的开头声明计数器外部开关。在循环开始之前应该进行初始化:counter = 0; – user3621602 2014-10-08 16:25:14