我需要让程序循环,直到用户输入" XXXX"作为名字。问题是,我的代码最多只循环一次并退出。我已经尝试过做一整天......而且似乎无法解决这个问题,但我觉得我真的非常接近!
修改 你们真棒!做了两个更改但现在它跳过了名称提示并直接进入存款提示。如何让它在循环中包含名称提示?
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main() {
string name, XXXX;
float deposit, time, interest, total, totinterest;
int compound;
cout << left;
int flag = 0;
do {
cout << "Enter your name or XXXX to stop: ";
getline(cin, name);
cout << name << " enter the following information: " << endl;
if (name == "XXXX"){
flag = 1;
}else
{
cout << setw(60) << "\tAmount on deposit: ";
cin >> deposit;
if (!deposit || deposit < 0){
cout << "\tPlease enter a positive number! ";
}
cout << setw(60) << "\tYears on deposit: ";
cin >> time;
if (!time || time < 0){
cout << "\tPlease enter a positive number! ";
return(0);
}
cout << setw(60) << "\tNumber of times the interest is compounded per year: ";
cin >> compound;
if (!compound || compound < 0){
cout << "\tPlease enter a positive number! ";
return(0);
}
if (time >= 5)
interest = .045;
else if (time >= 4)
interest = .04;
else if (time >= 3)
interest = .035;
else if (time >= 2)
interest = .025;
else if (time >= 1)
interest = .02;
else if (time < 1)
interest = .015;
total = (deposit)*pow((1 + interest / compound), (compound * time));
totinterest = total - deposit;
cout << left << setprecision(2) << fixed;
cout << endl;
cout << setw(15) << "Name " << setw(14) << "Years" << setw(18) << "Deposit Amount" << setw(18) << "Interest Earned " << setw(18) << "Total" << endl;
cout << "===============================================================================" << endl;
cout << setw(15) << name << setw(14) << time << setw(1) << "$" << setw(17) << deposit << setw(1) << "$" << setw(17) << totinterest << setw(1) << "$" << setw(18) << total << endl;
cout << endl;
cout << "Thank you for using tax program. Have a nice day. " << endl;
return(0);
}
} while (flag = 0);
}
答案 0 :(得分:5)
return(0)会让你走出主力。删除该行并重试。
答案 1 :(得分:5)
return(0)
将退出main()
,程序将终止。因此,将其从源中删除。
while (flag = 0)
中的条件也将始终返回false
。将其更改为while (flag == 0)
否则会导致循环仅迭代一次。
最后,<math.h>
函数需要pow()
。
#include <math.h>
答案 2 :(得分:4)
因为您在=
条件下使用的是==
而不是while
。
将flag = 0
更改为!flag
或flag==0
。
除此之外,你有return 0
这是无条件的。无论如何,这个return语句将使程序退出。
答案 3 :(得分:3)
你必须包括
#include <math.h>
让你的战俘功能发挥作用。我得到一个没有定义pow的错误。
答案 4 :(得分:3)
首先,你想要你的状态
while(flag == 0)
而非while (flag = 0)
此外,如果用户输入无效的时间或存款或复合值(例如小于0),则您的代码会输出错误消息并退出。相反,您希望在那里放置一个while循环,只要它们不断输入错误,就会一直提示用户输入有效信息。
最后,您希望使用myString.compare(otherString)
而不是==运算符
答案 5 :(得分:2)
你的else子句中有return(0);
。此外,在while循环中有=
而不是==
,这在(删除return语句之后)是无限循环的配方。