Задача на цикл, ошибка в теле цикла - 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 отвечает за расчет суммы сбережений. Эта петля работает аналогично первой, но проценты и платежи по сбережениям. Условие остановки этой петли - достижение возраста выхода на пенсию. В конце кода выводится итоговая сумма сбережений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д