Главная arrow С++ (часть 2) arrow Определение остатка непогашенной ссуды

Определение остатка непогашенной ссуды

Часто возникает желание узнать остаток непогашенной ссуды (remaining balance on a loan). Его легко вычислить, если вам известны первоначальная величина ссуды, процентная ставка, время, на которое выдана ссуда, и количество уже сделанных платежей. Для того чтобы найти остаток непогашенной ссуды, нужно сложить все сделанные платежи, вычитая из каждого платежа сумму выплаты по процентам, и затем полученный результат вычесть из первоначального размера ссуды.
Функция baianceo, приведенная в листинге 6.6, находит остаток непогашенной ссуды. Ей передаются первоначальный размер ссуды, процентная ставка, величина платежа, количество платежей в год и количество сделанных платежей. Функция возвращает остаток непогашенной ссуды.
"^ГГ"------------------------------------—---------------------------------------------------------------------------------------------------
Листинг 6.6. Расчет остатка непогашенной ссуды
finclude <ioscream> ¦include <cmath> finclude <iomanip> finclude <locale>
Using namespace std;
4 Находит остаток непогашенной ссуды.
double balance(double principal, double intRate,
double payment, int payPerYear,
int numPayments)  {
double bal = principal;
double rate = intRate / payPerYear;
rate /= 100.0; // преобразует проценты в дробь
for(int i = 0; i < numPayments; i++) bal -= payment - (bal * rate);
return bal;
)
int mainO  {
double p. r, pmt; int ppy, npmt;
// Присваивает locale значение english.
// Откорректируйте, если необходимо, язык/регион.
cout. imbue(locale("english"));
cout « "Enter original principal: "; cin » p;
cout « "Enter interest rate (as a percentage): "; cin » r;
cout « "Enter payment: "; cin » pmt;
cout « "Enter number of payments per year: "; cin » ppy;
cout «. "Enter number of payments made:  "; cin » npmt;
cout « "Remaining balance: " « fixed « setprecision(2) « balance(p, r, pmt, ppy, npmt) « endl;
return 0;
}
Далее приведен пример вывода программы из листинга 6.6.
Enter original principal: 10000 Enter payment: 207.58
number of payments per year: 12 gtiter number of payments made: 30
R0naining balance: 5,558.19