2017-04-26 2 views
1

J'essaye de calculer le loyer sans math.h et pow, d'une manière ou d'une autre j'ai presque eu raison, mais il ne calcule pas la bonne quantité et je ne suis pas sûr où le problème pourrait être, aucun conseil sur qu'est-ce qui me manque?Calculez l'intérêt sans la bibliothèque de maths

#include <stdio.h> 

double calcFutureValue(double startingAmount, double interest, int numberOfYears); 

int main() { 

    double startMoney, interest, futureMoney; 
    int years; 

    printf("Enter amount of money: "); 
    scanf("%lf", &startMoney); 
    getchar(); 

    printf("Enter interest on your money: "); 
    scanf("%lf", &interest); 
    getchar(); 

    printf("Enter amount of years: "); 
    scanf("%d", &years); 
    getchar(); 


    futureMoney = calcFutureValue(startMoney, interest, years); 

    printf("In %d years you will have %.1f", years, futureMoney); 
    getchar(); 

    return 0; 
} 

double calcFutureValue(double startingAmount, double interest, int numberOfYears) { 

    double totalAmount; 
    double interest2 = 1; 


    for (int i = 0; i < numberOfYears; i++) 
    { 
     interest2 += interest/100; 
     totalAmount = startingAmount * interest2; 
     printf("%lf", totalAmount); 
     getchar(); 

    } 

    return totalAmount; 
} 

Répondre

1

Vous n'êtes pas compounding the interest dans votre calcul.

Selon votre fonction, interest2 += interest/100.

Cela signifie que pour les intérêts de 10 pour cent, vous aurez:

0 : 1 
1 : 1.1 
2 : 1.2 
3 : 1.3 

Mais dans une situation d'intérêts composés, l'intérêt s'applique aux intérêts gagnés avant, ainsi que principal:

0 : 1 
1 : 1.1 
2 : 1.21 
3 : 1.331 

Essayez quelque chose comme ceci:

interest2 = 1 + interest/100.0; 
totalAmount = startingAmount; 

while (numberOfYears--) { 
    totalAmount *= interest2; 
} 
+0

Austin J'ai essayé la solution que vous avez donné, mais il semble ne pas fonctionner, j'ai enlevé la boucle et l'a remplacée par l'exemple en boucle. – Cutik

+0

Avez-vous initialisé 'totalAmount'? Actualisé. –

+0

Oui exactement comme vous l'avez écrit ci-dessus. – Cutik

0

Merci beaucoup, je suis toujours heureux d'obtenir diffe louer vue, je l'ai trouvé de travail quand j'ajouté ce bien:

double calcFutureValue(double startingAmount, double interest, int numberOfYears) { 

    double totalAmount; 
    double interest2 = 1; 
    double random3 = 1 + interest/100; 


    for (int i = 0; i < numberOfYears; i++) 
    { 
     interest2 *= random3; 
     totalAmount = startingAmount * interest2; 
     printf("%lf", totalAmount); 
     getchar(); 

    } 

    return totalAmount;