Задача на цикл, ошибка в теле цикла - C (СИ)
Формулировка задачи:
Всем привет! Тут такое задание, необходимо просчитать прибыль к выходу на пенсию.Изначально допустим мы должны 40000 под 3% годовых, каждый месяц вносим 500. Тогда цикл устанавливаем на каждый месяц: сначала мы должны 40000 через месяц учитывая 3% годовых мы должны 40100, но затем выплачиваем 500 и наш долг становится равен 39600. через месяц снова увеличивается долг на 0.03% и снова платеж 500. В итоге ответ должен выйти 587281.54, но у меня входит лишь 300 с лишним тысяч. В чем моя ошибка, может кто подскажет?
Листинг программы
- void finalfightfunction(){
- double payment = 500; //500 - ежемесячный платеж
- double owe_loans = 40000; //- 40000 - изначальный долг,позже пойдет в плюс
- double interest_loans = 0.03; //0,03 - 3% годовых
- double current_age = 22; //22 - наст возраст
- double retire_age = 65; //65 пенс возраст
- double amountofmonth = 0;
- double resultat = 0;
- amountofmonth = (retire_age - current_age) * 12; //количество месяцев до пенсии
- owe_loans = -owe_loans;
- for(int i = 0;i < amountofmonth ; i++) {
- resultat = owe_loans + owe_loans * (interest_loans / 12); //40100
- owe_loans = resultat + payment; //39,694. 68
- }
- printf ("bla bla bla bla bla bla %lf\n", owe_loans);
- }
Решение задачи: «Задача на цикл, ошибка в теле цикла»
textual
Листинг программы
- #include <stdio.h>
- int main(int argc, char* argv[])
- {
- double owe_loans = -40000;
- double savings = 0;
- double payment = 500;
- double interest_loans = 0.03;
- double interest_savings = 0.05;
- unsigned current_age = 22;
- unsigned retire_age = 65;
- unsigned amountofmonth = (retire_age - current_age) * 12;
- while (amountofmonth > 0 && owe_loans < 0)
- {
- owe_loans += owe_loans * (interest_loans / 12);
- owe_loans += payment;
- --amountofmonth;
- }
- savings += owe_loans;
- while (amountofmonth > 0)
- {
- savings += savings * (interest_savings / 12);
- savings += payment;
- --amountofmonth;
- }
- printf("%.2lf\n", savings);
- }
Объяснение кода листинга программы
В этом коде две вложенные петли while.
- Первая петля while отвечает за расчет суммы кредита, которую нужно выплатить. В этой петле мы добавляем к сумме кредита проценты по кредиту и сумму ежемесячного платежа. Условие остановки этой петли - достижение возраста выхода на пенсию или полное погашение кредита.
- Вторая петля while отвечает за расчет суммы сбережений. Эта петля работает аналогично первой, но проценты и платежи по сбережениям. Условие остановки этой петли - достижение возраста выхода на пенсию. В конце кода выводится итоговая сумма сбережений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д