Fonction en C pour simulation de prêt

mvgeek Messages postés 1252 Date d'inscription   Statut Contributeur sécurité Dernière intervention   -  
mvgeek Messages postés 1252 Date d'inscription   Statut Contributeur sécurité Dernière intervention   -
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   Statut Membre Dernière intervention   54
 
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   Statut Contributeur sécurité Dernière intervention   107
 
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   Statut Contributeur sécurité Dernière intervention   107
 
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