0

我无法理解为什么我的功能不起作用。我已经多次查看 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; 

}
4

2 回答 2

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 美元以上。尝试一些有意义的输入(例如您的示例)或添加一些代码来测试您的剩余债务是否减少了。

于 2013-07-11T00:17:07.987 回答
0

你用过调试器吗?如果是我,我会在 while 循环中设置一个断点并评估变量以查看它在做什么。我发现调试代码比阅读它并成为我自己的调试器要容易得多。:)

于 2013-07-11T00:18:50.653 回答