Fonction en C pour simulation de prêt

mvgeek Messages postés 1429 Statut Contributeur sécurité -  
mvgeek Messages postés 1429 Statut Contributeur sécurité -
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

  1. 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
    1. mvgeek Messages postés 1429 Statut Contributeur sécurité 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
  2. mvgeek Messages postés 1429 Statut Contributeur sécurité 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