Написать программу, рассчитывающую график платежей по кредиту.
Текстовый файл:
<процентная ставка> <сумма кредита> <срок кредита_в_месяцах> <дата выдачи кредита>
Файл может содержать пустые и невалидные строки. Программа должна корректно это обрабатывать.
Передачу имени входного файла, реализовать через аргументы командной строки.
При заданной годовой процентной ставке P
, сумме кредита S
, сроке кредита в N
месяцев и дате выдачи кредита D
программа должна вывести таблицу расчёта погашения кредита:
Предполагается, что выплаты производятся аннуитетными платежами (ежемесячная сумма выплаты не меняется, но с каждым месяцем в этой сумме содержится больше выплат основного долга по кредиту и меньше процентных выплат).
Вычисление суммы аннуитетного платежа производится по формуле:
Где p
– это нормализованная месячная процентная ставка (p = P / 100 / 12
).
Для S = 1200000
, P = 17
и N = 36
сумма аннуитетного платежа равна 42783.27
.
Для вычисления процентной составляющей в платеже можно воспользоваться следующей формулой: Percent = p * Rem
, где Rem
– остаток задолженности по кредиту. Тогда сумма, идущая в погашение основного долга, равна Principal = Payment - Percent
.
Кроме показа таблицы программа должна вычислить и отобразить общую сумму переплаты (суммарное количество выплаченных процентов).
Текстовый файл
Дата Сумма к оплате Проценты Основной долг
...
15.09.2014 42783.27 2340.90 40442.37
15.10.2014 42783.27 1767.96 41015.31
...
Необходимо написать полноценный набор тестов, охватывающий различные варианты кредитов, все варианты перехода платежей на другой день и т.п.
Функции ввода/вывода нужно тестировать с помощью std::stringstream.