2015-10-02 2 views
-1

Я исправил проблемы, которые вы, ребята, указали (спасибо btw!), Но теперь это дает мне бесконечный цикл. Я не понимаю, почему. Мой mortgageleft становится уменьшаются на monthlypayment каждый раз, когда проходит цикл в то время как ...Если Else не работает

#include <stdlib.h> 


int main(){ 
    float MortgageLeft, InterestRate, MonthlyPayment, MonIntRate, AmountOwed; 
    int Month=0; 

    printf("What is the value left on the mortgage?\n"); 
    scanf("%f", &MortgageLeft); 

    printf("What is the annual interest rate of the loan, in percent?\n"); 
    scanf("%f", &InterestRate); 

    printf("What is the monthly payment?\n\n"); 
    scanf("%f", &MonthlyPayment); 

    MonIntRate= (InterestRate/12)/100; 

    printf("Month\t\t Payment\t\t Amount Owed"); 

    while (MortgageLeft>0){ 
     MortgageLeft=(MortgageLeft*MonIntRate)+MortgageLeft; 
     if(MortgageLeft>MonthlyPayment) 
     { 
      MortgageLeft=MortgageLeft-MonthlyPayment;  
      Month++; 
      printf("%d\t\t %.2f\t\t %.2f", Month, MonthlyPayment, MortgageLeft); 
     } 

} 
    return 0; 
} 
+1

Проверьте кронштейны –

+0

Вы должны включать тег, какой язык вы используете. – brenners1302

+1

вы не меняете значение «MortgageLeft». когда выйдет из цикла 'while'? – DarkKnight

ответ

2

Вашей while петля не хватает квадратных скобок, так что только выполняет очень следующий оператор AmountOwed=(MortgageLeft*MonIntRate)+MortgageLeft; в цикле, который никогда не изменяет условие цикла , Бесконечная петля означает, что вы никогда не достигнете if/else.

2

Вы не оставите цикл While до тех пор, пока MortgageLeft не станет равным нулю. В какой точке внутри цикла While значение MortgageLeft становится меньше?

Для вашего обновленного вопроса, что происходит, когда MortgageLeft меньше или равно MonthlyPayment, но все еще больше нуля?

+0

Спасибо, я вижу это сейчас. –

0

В следующем коде, либо вам не хватает фигурные скобки для В то время как петли и/или пропущенный изменить значение MortgageLeft

while (MortgageLeft>0) 
     AmountOwed=(MortgageLeft*MonIntRate)+MortgageLeft; 
     if(AmountOwed>MonthlyPayment) 
     { 
      AmountOwed=AmountOwed-MonthlyPayment;  
      Month++; 
      printf("%d\t\t %.2f\t\t %.2f", Month, MonthlyPayment, AmountOwed); 
     } 
     else 
     { 
      Month++; 
      printf("%d\t\t %f\t\t 0", Month, AmountOwed); 
    } 
Смежные вопросы