C программа для расчета простых процентных платежей

#c

#c

Вопрос:

Я пытаюсь написать этот код для школы, и я абсолютно застрял на том, что я делаю неправильно, если бы кто-нибудь мог просто указать мне правильное направление, это было бы полезно. Пытаюсь узнать как можно больше. Моя программа не вычисляет, сколько причитается в конце каждого месяца, после вычитания платежа, а затем добавления процентов. ОН просто отображает одно и то же значение.

 #include<stdio.h>

int main()
{
float loan;
float interest;
int n;
float outstanding;
float outstanding2;
float princeable;
float payment;


printf("nEnter the amount of the loan: n ");
scanf("%f" , amp;loan);
printf("nEnter monthly interest percentagen ");
scanf("%f" , amp;interest);
printf("nEnter monthly payments: n ");
scanf("%f" , amp;payment);
printf("nEnter number of monthly Payments: n ");
scanf("%i" , amp;n);


while (n >= 0) {
    outstanding = (loan - payment);
    outstanding = (outstanding * (1   (interest/100)));


    printf("Outstanding Balance after %i =%.2fnn", n, outstanding);
    n--;
}

return 0;

}
 

Комментарии:

1. В чем вопрос? (То есть, в чем проблема, с которой вы столкнулись?)

2. В чем проблема? Ошибка компиляции? Ошибка при ее запуске? Вычисляется неправильно?

3. Я предполагаю, что «непогашенный остаток» никогда не меняется. Это одно и то же для каждой итерации.

4. @BenvanGompel — Если только это не ипотека в США 6-летней давности — в этом случае «непогашенный остаток» увеличивается с каждой итерацией.

5. Вопрос присутствует, но вначале это скорее утверждение. @BenvanGompel правильно.


Ответ №1:

На каждой итерации вы должны рассчитывать outstanding на основе его предыдущего значения, а не на основе первоначальной стоимости кредита, поскольку вы также платите проценты за проценты.

 outstanding = loan;
while (n > 0) {
    outstanding = (outstanding - payment);
    outstanding = (outstanding * (1   (interest/100)));

    printf("Outstanding Balance after %i =%.2fnn", n, outstanding);
    n--;
}
 

Ответ №2:

Эта линия:

 outstanding = (loan - payment);
 

внутри цикла неверно, так как каждый раз оно начинается с начального loan значения. Это должно быть:

 outstanding = (outstanding - payment);
 

Вам также нужно будет установить outstanding значение loan перед входом в цикл.

Кроме того, у вас слишком много итераций цикла и недопустимая escape-последовательность O в вашей printf строке.