我无法理解为什么我的功能不起作用。我已经多次查看了while循环,但我不明白为什么程序没有正确执行。如何阻止while循环无限循环?
我正在尝试创建一个程序,告诉用户需要多长时间还清贷款以及上个月需要支付的费用。用户输入借入的贷款,他/她打算每个月支付的利息和金额。
例如,我以12%的年利率借了100美元。第一个月我要支付100美元* 0.01 = 1美元。我们说我每个月支付50美元然后我的新余额是100 + 1 - 50 = 51美元。现在我必须支付1%的0.51美元。我的新余额是51 + 0.51 - 50 = 1.51美元,我继续前进,直到它全部还清。
这就是我的代码:
#include <iostream>
using namespace std;
void get_input(double &principal, double &interest, double &payment);
int main()
{
double money, i, pay;
cout << "How much do you want to borrow ?";
cin >> money;
cout << "What is the annual interest rate expressed as a percent?";
cin >> i;
cout << "What is the monthly payment amount?";
cin >> pay;
i = i/100;
get_input(money, i, pay);
}
void get_input(double &principal, double &interest, double &payment)
{
double totalpayment, add = 0;
int months = 1;
while(principal>0)
{
add = principal*interest;
principal = principal + add - payment;
months++;
}
totalpayment = payment+principal;
cout << "The last month for your debt to be paid off is: " << months << endl;
cout << "Your final payment is: " << totalpayment << endl;
}
答案 0 :(得分:0)
在使用之前,您需要将百分比除以100:
while(principal>0)
{
add = principal*interest;//this multiplies the number by 18 instead of .18
principal = principal + add - payment;
months++;
}
您需要乘以百分比 - 然后除以100 。
add=principal*interest/100.0;
此外,如果您每1000美元的贷款支付18%的月利息,如果您想要支付,最好每月支付超过180美元。尝试一些有意义的输入(如你的例子)或添加一些代码来测试你的剩余债务是否已经下降。
答案 1 :(得分:0)
你使用过调试器了吗?如果是我,我会在while循环中设置一个断点并评估变量以查看它在做什么。我发现调试代码比阅读它并成为我自己的调试器要容易得多。 :)