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;

さらに、1,000 ドルのローンで毎月 18% の利息を支払う場合、返済したい場合は、1 か月に 180 ドル以上支払うことをお勧めします。(例のように)意味のある入力を試すか、コードを追加して、残りの借金が減ったかどうかをテストします。

于 2013-07-11T00:17:07.987 に答える