Задача на цикл, ошибка в теле цикла - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Тут такое задание, необходимо просчитать прибыль к выходу на пенсию.Изначально допустим мы должны 40000 под 3% годовых, каждый месяц вносим 500. Тогда цикл устанавливаем на каждый месяц: сначала мы должны 40000 через месяц учитывая 3% годовых мы должны 40100, но затем выплачиваем 500 и наш долг становится равен 39600. через месяц снова увеличивается долг на 0.03% и снова платеж 500. В итоге ответ должен выйти 587281.54, но у меня входит лишь 300 с лишним тысяч. В чем моя ошибка, может кто подскажет?
Листинг программы
  1. void finalfightfunction(){
  2. double payment = 500; //500 - ежемесячный платеж
  3. double owe_loans = 40000; //- 40000 - изначальный долг,позже пойдет в плюс
  4. double interest_loans = 0.03; //0,03 - 3% годовых
  5. double current_age = 22; //22 - наст возраст
  6. double retire_age = 65; //65 пенс возраст
  7. double amountofmonth = 0;
  8. double resultat = 0;
  9. amountofmonth = (retire_age - current_age) * 12; //количество месяцев до пенсии
  10. owe_loans = -owe_loans;
  11. for(int i = 0;i < amountofmonth ; i++) {
  12. resultat = owe_loans + owe_loans * (interest_loans / 12); //40100
  13. owe_loans = resultat + payment; //39,694. 68
  14. }
  15. printf ("bla bla bla bla bla bla %lf\n", owe_loans);
  16. }

Решение задачи: «Задача на цикл, ошибка в теле цикла»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char* argv[])
  4. {
  5.   double owe_loans = -40000;
  6.   double savings = 0;
  7.   double payment = 500;
  8.  
  9.   double interest_loans = 0.03;
  10.   double interest_savings = 0.05;
  11.  
  12.   unsigned current_age = 22;
  13.   unsigned retire_age = 65;
  14.   unsigned amountofmonth = (retire_age - current_age) * 12;
  15.  
  16.   while (amountofmonth > 0 && owe_loans < 0)
  17.   {
  18.     owe_loans += owe_loans * (interest_loans / 12);
  19.     owe_loans += payment;
  20.     --amountofmonth;
  21.   }
  22.  
  23.   savings += owe_loans;
  24.  
  25.   while (amountofmonth > 0)
  26.   {
  27.     savings += savings * (interest_savings / 12);
  28.     savings += payment;
  29.     --amountofmonth;
  30.   }
  31.  
  32.   printf("%.2lf\n", savings);
  33. }

Объяснение кода листинга программы

В этом коде две вложенные петли while.

  1. Первая петля while отвечает за расчет суммы кредита, которую нужно выплатить. В этой петле мы добавляем к сумме кредита проценты по кредиту и сумму ежемесячного платежа. Условие остановки этой петли - достижение возраста выхода на пенсию или полное погашение кредита.
  2. Вторая петля while отвечает за расчет суммы сбережений. Эта петля работает аналогично первой, но проценты и платежи по сбережениям. Условие остановки этой петли - достижение возраста выхода на пенсию. В конце кода выводится итоговая сумма сбережений.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.571 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы