[英]C++: Building functions
我無法理解為什么我的功能無法正常工作。 我已經看過幾次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;
}
您需要先將百分比除以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以上。 嘗試一些有意義的輸入(例如您的示例),或添加一些代碼以測試您的剩余債務是否減少了。
您是否使用過調試器? 如果是我,我會在while循環中設置一個斷點,並評估變量以查看其作用。 我發現調試代碼比閱讀並成為自己的調試器容易得多。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.