Fonction en C pour simulation de prêt

Fermé
mvgeek Messages postés 1252 Date d'inscription dimanche 12 juillet 2009 Statut Contributeur sécurité Dernière intervention 4 septembre 2011 - 15 mai 2011 à 22:12
mvgeek Messages postés 1252 Date d'inscription dimanche 12 juillet 2009 Statut Contributeur sécurité Dernière intervention 4 septembre 2011 - 16 mai 2011 à 18:39
Bonjour,
pour m'entraîner dans la programmation, je cherche à coder une fonction calculant une simulation de prêt immobilier. Voici la formule sur laquelle je me suis calqué (que j'ai retranscrit en ligne) : https://www.guideducredit.com/pret-immobilier/simulation-pret-immobilier/simulation-mensualites.php

Voici ma formule de programmation en C :

float formule(float montant, int mensualite, float interet)
{
float puissance_douze_plus_t = 0;
puissance_douze_plus_t = 12 + interet;
int increment_puissance_douze_plus_t = 0;
while(increment_puissance_douze_plus_t < mensualite)
{
puissance_douze_plus_t * puissance_douze_plus_t;
increment_puissance_douze_plus_t++;
}
float douze_puissance = 0;
douze_puissance = 12;
int increment_douze_puissance = 0;
while(increment_douze_puissance < mensualite)
{
douze_puissance * douze_puissance;
increment_douze_puissance++;
}
float cent_quarante_quatre = 0;
cent_quarante_quatre = 144 * (12+interet);
int increment_cent_quarante_quatre = 0;
while(increment_cent_quarante_quatre < mensualite)
{
cent_quarante_quatre * cent_quarante_quatre;
increment_cent_quarante_quatre++;
}
float n_plus_deux = mensualite;
n_plus_deux = n_plus_deux + 2;
float douze_puissance_plus_deux = 0;
douze_puissance_plus_deux = 12;
int increment_douze_puissance_plus_deux = 0;
while(increment_douze_puissance_plus_deux < mensualite)
{
douze_puissance_plus_deux * douze_puissance_plus_deux;
increment_douze_puissance_plus_deux++;
}
float resultat_final = 0;
resultat_final = montant * interet * puissance_douze_plus_t * douze_puissance / (cent_quarante_quatre - douze_puissance_plus_deux);
return resultat_final;
}

Bizarrement, mon IDE (Codeblocks) semble dire que les "machin * machin" dans les boucles ne changent rien.

D'ailleurs, quelque soit les variables, le résultat demeure fixe.

Une idée ?

Cordialement.

2 réponses

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
16 mai 2011 à 08:52
Bonjour,
C'est normal car vous ne précisez pas à qui est affectée le résultat de l'opération :
quand vous faites :
douze_puissance * douze_puissance;

le calcul est dans le vide, comme ceci :
a = douze_puissance*douze_puissance;

"a" va recevoir la valeur, et comme ceci :
douze_puissance *= douze_puissance;

c'est la var douze_puissance qui récupère sa valeur * sa valeur
Je pense que vous voyez d'où venait le problème
0
mvgeek Messages postés 1252 Date d'inscription dimanche 12 juillet 2009 Statut Contributeur sécurité Dernière intervention 4 septembre 2011 107
16 mai 2011 à 17:43
Merci beaucoup :) Donc, le bon code était :
puissance_douze_t = puissance_douze_t * puissance_douze_t.

Dire que je fais encore ce genre d'erreurs... x)
0
mvgeek Messages postés 1252 Date d'inscription dimanche 12 juillet 2009 Statut Contributeur sécurité Dernière intervention 4 septembre 2011 107
16 mai 2011 à 18:39
Argh, maintenant, après avoir amélioré le code, je me retrouve avec un nouveau problème. Quelqu'un pourrait me dire quelle a été mon erreur ci-dessous ? :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double formule(double emprunt, double taux, double duree)
{
double puissance_douze_plus_t = 0;
puissance_douze_plus_t = 12 + taux;
puissance_douze_plus_t = pow(puissance_douze_plus_t, duree);
double douze_puissance = 12;
douze_puissance = pow(douze_puissance, duree);
double cent_quarante_quatre = 0;
cent_quarante_quatre = 144 * (12 + taux);
cent_quarante_quatre = pow(cent_quarante_quatre, duree);
double douze_puissance_plus_deux = 12;
double taux_plus_2 = taux + 2;
douze_puissance_plus_deux = pow(douze_puissance_plus_deux, taux_plus_2);
return emprunt * taux * puissance_douze_plus_t * douze_puissance / (cent_quarante_quatre - douze_puissance_plus_deux);
}

int main()
{
printf("Bienvenue sur SimulFi ! Tapez 1 pour continuer : ");
int accord = 0;
scanf("%d", &accord);
if(accord == 1)
{
double emprunt = 0; //Initialisation : variable du capital emprunté
double taux = 0; //Initialisation : variable du taux proportionnel annuel
double duree = 0; //Initialisation : variable de la durée (nombre de mois)
double reponse = 0; //Initialisation : variable de la réponse
printf("Capital emprunté (mettez des points à la place des virgules !) : ");
scanf("%f", &emprunt);
printf("Taux annuel proportionnel des intérêts (mettez des points à la place des virgules !) : ");
scanf("%f", &taux);
printf("Durée du prêt (en mois) : ");
scanf("%f", &duree);
reponse = formule(emprunt,taux,duree);
printf("Le montant des mensualités est de : %f", reponse);
}
else
{
printf("Annulation !");
return 0;
}
return 0;
}
0