2013-07-11 65 views
0

我無法理解爲什麼我的函數不起作用。我已經看了幾次while循環,但我不明白爲什麼程序沒有正確執行。我如何阻止while循環無限地發生?C++:構建函數

我想創建一個程序,它告訴用戶它會需要多長時間還清貸款,哪些需要償還的最後一個月。用戶輸入借入的貸款,他/她每月想要支付的利息和錢。

例如,我以12%的年利率借了100美元。第一個月我必須支付100美元* 0.01 = 1美元。假設我每月支付50美元,那麼我的新餘額是100 + 1-50 = 51美元。現在我必須支付這個0.51美元的1%。我的新餘額是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

你輸入到這個程序中的確切輸入是什麼? – user2357112

+0

我爲貸款輸入了1000,利息爲18,每月支付50付 – LorrJ

+0

正如您在字面上輸入的內容一樣。我懷疑你投入美元或百分號。 – user2357112

回答

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一個月$如果你想還清。嘗試一些有意義的輸入(比如你的例子)或者添加一些代碼來測試你的剩餘債務是否已經減少。

+0

嗯,我修正了,但我仍然沒有得到輸出。我的while循環肯定有問題。 – LorrJ

+0

在相關說明中,年利率和月利率混合在一起而沒有轉換。 – user2357112

+0

哦,好的,謝謝用戶。我現在會回去。 – LorrJ

0

您是否使用過調試器?如果是我,我會在while循環中設置一個斷點並評估變量以查看它在做什麼。我發現調試代碼要比閱讀它更容易,併成爲我自己的調試器。 :)