IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Programme C calcul taux d'interet


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 1
    Points
    1
    Par défaut Programme C calcul taux d'interet
    BOnjour a tout le monde.
    J'ai besoin d'un peu d'aide pour mon programme. Il s'agit de se rapprocher du taux d'interet par des intervalles tout en connaissant le montant du pret, la valeur des remboursement annuels et la durée. DOnc je pensais faire une boucle do...while avec un if-else mais je ne sais pas quoi faire apres pouvez vous m'aider? merci d'avance
    reno
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    #include<stdio.h>
    #include<math.h>
    #include <stdlib.h>
     
       float var(float, int, int);
       float valremb(float, int, int, int, float);
     
       int main (void) 
                  {
          double txinteret, montantemprunt;
          double nbremb;
          double Max, Min, K, v;
          int i, duree, n, y, p, r1, r;
     
          printf("Montant du pret ? \n");   
          scanf("%lf", &montantemprunt);
          printf("Nombre de remboursements annuels ? \n");
          scanf("%d", &nbremb);
          printf("Sur une durée (en annees)? \n");
          scanf("%d", &duree);
     
     
          do {
             if (r1<r)
             {
     
             }
     
             else{
     
             }
     
             }
     
          }while (abs(r1-r)<(1./100));
     
     
     
       }
     
     
       float var (float i, int n, int y)
     
       {
          float v;
          v = pow((1+i/n),(n*y));
          return v;
       }
     
       float valremb (float i, int n, int y, int p, float v)
     
       {
          v = var(i,n,y);
          float r;
          r = (i*p*v)/(n*(v - 1));
          return r;
          }

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Ne serait-il pas plus simple de faire la somme totale des remboursements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double montantrembourse;
    montantrembourse = (nbremb * duree);
    et de faire le calcul du TEG annuel par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txinteret = pow( montantrembourse / montantemprunt, 1 / duree);
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 53
    Points
    53
    Par défaut
    attention aussi à l'utilisation de scanf, c'est une fonction puissante, il est conseillé d'en utiliser une autre.


    je t'aurai bien dis d'utiliser fflush mais ram va me tomber dessus :p


    le fait que tu fasses tout tes scanf à la suite comme ça, il peut y avoir un probleme.


    Et je ne comprend pas ce que r1>r viens faire là dedans, que represente ces variables ?

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre aide.

    Mais on me demande de faire autrement :
    1°) au début au demande le montant du pret (p) sa durée (y) le nombre de remboursement annuels (n) et le montant d'un remboursement (r).
    Sachant que la valeur d'un rembrousement c'est :

    r = (i * p * var)/(n * (var -1^))

    avec var = (1 + i/n)^(n*y)

    ou i est le taux d'interet

    2°) on veut partir de deux valeur i0 =0 et i1 (i1 doit etre supérieur au taux reel); on calculera le remboursement correspondant i puis on refait le calcul avec des valeur i(n+1) = in +(ou -) |((in - i(n-1))/2| suivant que l'on soit au dessus ou au dessous de la valeur réelle de remboursement
    le resultat sera atteint lorsque l'on sera a 1/100 de la valeur réelle de rembourssement.


    Début de recherche :
    donc connaissant le montant du pret (p) sa durée (y) le nombre de remboursement annuels (n) et le montant d'un remboursement (r), on peut calculer le total des remboursement :
    montantrembours = (n * y)
    puis je pensais faire une boucle do while pour faire la parti 2°) non?

    merci d'avance

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Hummm... désolé en effet, la formule que j'ai donné ne fonctionne que pour les intérêts capitalisés, et non sur les intérêts d'emprunt qui ne courent que sur le capital restant à rembourser.

    Pour le contenu de ta boucle, je dirais que :
    - tu dois conserver 2 valeurs de i : i(n) (disons dans une variable i_n) et i(n-1) (disons i_n_1) que tu initialises respectivement à 0 et 1 par exemple
    - puis calculer r1 (donc en gros, appeler valremb)
    - puis, tu calcules i par la formule que tu as donné (en ajoutant ou retranchant selon que r1 < r ou r1 >= r
    - ensuite tu décales i(n) dans i(n-1) (i_n_1 = i_n) et tu places i dans i(n) (i_n = i)

    Lorsque tu sortiras de ta boucle, i_n devrait contenir ta valeur recherchée.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    J'ai continué un peu je sais pas si je suis sur la bonne piste pouvez vous m'éclairer??merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    #include<stdio.h>
    #include<math.h>
    #include <stdlib.h>
     
       float var(float, int, int);
       float valremb(float, int, int, int, float);
     
       int main (void) 
                  {
          double montantemprunt, nbremb, txinteret, valremb, var;
          int duree, X, Y, Z;
     
          printf("Montant du pret ? \n");   
          scanf("%lf", &montantemprunt);
          printf("Nombre de remboursements annuels ? \n");
          scanf("%d", &nbremb);
          printf("Sur une durée (en annees)? \n");
          scanf("%d", &duree);
          printf("Valeur d'une mensualité ? \n");
          scanf("%d", &valremb);
     
          montantremb = valremb * duree * nbremb
     
     
          do {
          X = 0;
          Y = 1;
          var = pow (1 + Z/nbremb, nbremb * duree)
          r = (1 * montantemprunt * var)/(duree * (var - 1))
     
             if (r>valremb)
             {
             Z = X + abs((X-Y)/2);
              }
     
             else{
             Z = X - abs((X-Y)/2);
     
             }
     
             }
     
          }while (abs(r1-r)<(1./100));
     
     
     
       }
     
     
       float var (float i, int n, int y)
     
       {
          float v;
          v = pow((1+i/n),(n*y));
          return v;
       }
     
       float valremb (float i, int n, int y, int p, float v)
     
       {
          v = var(i,n,y);
          float r;
          r = (i*p*v)/(n*(v - 1));
          return r;
          }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Points : 53
    Points
    53
    Par défaut
    Oula, apparement je ne comprend pas, tu es en BTS IG ? car les calcul de taux capitalisé etc pour moi c'est du chinois.


    J'avais cherché un peu dans ma tite tete hier soir j'avais trouvé la formule suivante :

    Taux = (n*y) - p

    apres c'est un simple calcul de pourcentage.

    Mais apparement c'est bien avec r1 et r que tu dois faire ça, je laisse donc ma place pour que vous puissiez parler chinois xD


    Juste concernant ton code, tu as defini

    X = 0
    Y = 1

    Dans ta boucle, je n'ai pas regardé le code, mais ça va les remettre à 0 et 1 chaque fois que tu vas reboucler, c'est peut etre ce que tu veux mais je prefere prevenir ^^

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Deux remarques, mais tu commences à être proche d'une solution :
    - tu as défini une fonction pour calculer r (valremb(...)) et var (var(...)) : pourquoi recalculer ces valeurs dans la boucle ?
    - tu as initialisé X et Y (je suppose i(0) et i(1)) dans la boucle : ils n'évolueront donc jamais. Tu dois les initialiser à l'extérieur de la boucle, et les faire évoluer pour qu'ils deviennent i(1), i(2), puis i(2), i(3), etc ... (donc avec le Z calculé en fin de boucle).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    J'ai changé deux ou trois trucs mais je ne vois pas comment faire pour transormer i(o) en i(1) etc... :s je ne suis pas très bon en informatique ^^
    Mais merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    #include<stdio.h>
    #include<math.h>
    #include <stdlib.h>
     
       float var(float, int, int);
       float valremb(float, int, int, int, float);
     
       int main (void) 
                  {
          double montantemprunt, nbremb, txinteret, valremb, var;
          int duree, X, Y, Z;
     
          printf("Montant du pret ? \n");   
          scanf("%lf", &montantemprunt);
          printf("Nombre de remboursements annuels ? \n");
          scanf("%d", &nbremb);
          printf("Sur une durée (en annees)? \n");
          scanf("%d", &duree);
          printf("Valeur d'une mensualité ? \n");
          scanf("%d", &valremb);
     
          montantremb = valremb * duree * nbremb
     
          X = 0;
          Y = 1;
     
          do {
     
             if (r>valremb)
             {
     
             Z = X + abs((X-Y)/2);
              }
     
             else{
     
             Z = X - abs((X-Y)/2);
             }
     
             }
     
          }while (abs(r1-r)<(1./100));
     
     
     
       }
     
     
       float var (float txinteret, int nbremb, int duree)
     
       {
          float v;
          v = pow((1+txinteret/nbremb),(nbremb*duree));
          return v;
       }
     
       float valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
     
       {
          v = var(txinteret,nbremb,y);
          float r;
          r = (txinteret*montantemprunt*v)/(nbremb*(v - 1));
          return r;
          }

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    N'oublie pas la balise code

    Sinon, pour tes questions :
    - attention : tu as défini valremb comme variable contenant le remboursement mensuel saisi, et valremb comme fonction calculant le remboursement mensuel en fonction de i. Tu dois donner deux noms différents
    - tu as défini la fonction valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v) avec le paramètre v (var), mais tu calcules ce paramètre dans valremb. Inutile de le passer en paramètre, il suffit de le déclarer dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    float valremb (float txinteret, int nbremb, int duree, int montantemprunt)
    {
    float v, r;
    v = var(txinteret,nbremb,y);
    r = (txinteret*montantemprunt*v)/(nbremb*(v - 1));
    return r;
    }
    - dans ta boucle, tu ne calcules plus r (que tu n'as d'ailleurs pas défini). Ajoute donc la définition de r, et son calcul dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r = valremb(Y, nbremb, duree, montantemprunt);
    - tu as déclaré des variables double, mais tes fonctions retournent et acceptent des float : passe tout en double ou en float
    - tu as déclaré X, Y et Z en entier, mais ce ne sont pas des valeurs entières (sauf pour i(0) et i(1))
    - pour décaler X, Y et Z, il suffit d'écrire :
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Ca avance ca avance ^^ mais quest ce que je dois améliorer?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
     
    #include<stdio.h>
    #include<math.h>
    #include <stdlib.h>
     
    float var(float, int, int);
    float valremb(float, int, int, int, float);
     
    int main (void) 
    {
    double montantemprunt, nbremb, txinteret, valremb, var;
    int duree, X, Y, Z;
     
    printf("Montant du pret ? \n"); 
    scanf("%lf", &montantemprunt);
    printf("Nombre de remboursements annuels ? \n");
    scanf("%d", &nbremb);
    printf("Sur une durée (en annees)? \n");
    scanf("%d", &duree);
    printf("Valeur d'une mensualité ? \n");
    scanf("%d", &valremb);
     
    montantremb = valremb * duree * nbremb
     
    X = 0;
    Y = 1;
     
    do {
    var = var (float txinteret, int nbremb, int duree)
    valremb = valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
     
    if (r>valremb)
    {
    X=++
    Y=++
    Z = X + abs((X-Y)/2);
    }
     
    else{
    X=++
    Y=++
    Z = X - abs((X-Y)/2);
    }
     
    }
     
    }while (abs(r1-r)<(1./100));
     
     
     
    }
     
     
    float var (float txinteret, int nbremb, int duree)
     
    {
    float v;
    v = pow((1+txinteret/nbremb),(nbremb*duree));
    return v;
    }
     
    float valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
     
    {
    v = var(txinteret,nbremb,y);
    float r;
    r = (txinteret*montantemprunt*v)/(nbremb*(v - 1));
    return r;
    }

  12. #12
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Je crois qu'il faut que tu lises mon message précédent
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Et la? il y a encore des choses a revoir ?
    Je suis pas sur : il fau quand meme dire que X=0 et Y=1 au début non? X=Y et Y=Z on le mets dans la boucle?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include<stdio.h>
    #include<math.h>
    #include <stdlib.h>
     
    float var(float, int, int);
    float valremb(float, int, int, int, float);
     
    int main (void) 
    {
    float montantemprunt, nbremb, txinteret, valrembdonne, var;
    int duree, X, Y, Z;
     
    printf("Montant du pret ? \n"); 
    scanf("%lf", &montantemprunt);
    printf("Nombre de remboursements annuels ? \n");
    scanf("%d", &nbremb);
    printf("Sur une durée (en annees)? \n");
    scanf("%d", &duree);
    printf("Valeur d'une mensualité ? \n");
    scanf("%d", &valrembdonne);
     
    montantremb = valrembdonne * duree * nbremb
     
    X = 0;
    Y = 1;
     
    do {
    var = var (float txinteret, int nbremb, int duree)
    valremb = valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
    r = valremb(Y, nbremb, duree, montantemprunt);
     
    if (r>valremb)
    {
    X=Y
    Y=Z
    Z = X + abs((X-Y)/2);
    }
     
    else{
    X=Y
    Y=Z
    Z = X - abs((X-Y)/2);
    }
     
    }
     
    }while (abs(r1-r)<(1./100));
     
     
     
    }
     
     
    float var (float txinteret, int nbremb, int duree)
     
    {
    float v;
    v = pow((1+txinteret/nbremb),(nbremb*duree));
    return v;
    }
     
    float valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
     
    {
    float v, r;
    v = var(txinteret,nbremb,y);
    r = (txinteret*montantemprunt*v)/(nbremb*(v - 1));
    return r;
    }

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include<stdio.h>
    #include<math.h>
    #include <stdlib.h>
     
    float var(float, int, int);
    float valremb(float, int, int, int, float);
     
    int main (void) 
    {
    float montantemprunt, nbremb, txinteret, valrembdonne, Var1, Valeurrembourse;
    int duree, X, Y, Z;
     
    printf("Montant du pret ? \n"); 
    scanf("%lf", &montantemprunt);
    printf("Nombre de remboursements annuels ? \n");
    scanf("%d", &nbremb);
    printf("Sur une durée (en annees)? \n");
    scanf("%d", &duree);
    printf("Valeur d'une mensualité ? \n");
    scanf("%d", &valrembdonne);
     
    montantremb = valrembdonne * duree * nbremb
     
    X = 0;
    Y = 1;
     
    do {
    Var1 = var (float txinteret, int nbremb, int duree)
    Valeurrembourse = valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
    r = valremb(Y, nbremb, duree, montantemprunt);
     
    if (r>Valeurrembourse)
    {
    X=Y
    Y=Z
    Z = X + abs((X-Y)/2);
    }
     
    else{
    X=Y
    Y=Z
    Z = X - abs((X-Y)/2);
    }
     
    }
     
    }while (abs(r1-r)<(1./100));
     
     
     
    }
     
     
    float Var1 (float txinteret, int nbremb, int duree)
     
    {
    float v;
    v = pow((1+txinteret/nbremb),(nbremb*duree));
    return v;
    }
     
    float Valeurrembourse (float txinteret, int nbremb, int duree, int montantemprunt, float v)
     
    {
    float v, r;
    v = Var1(txinteret,nbremb,y);
    r = (txinteret*montantemprunt*v)/(nbremb*(v - 1));
    return r;
    }

  15. #15
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Il est nettement plus judicieux de calculer Z avant de mettre à jour X et Y.
    Et comme c'est un traitement commun quelquesoit la condition sur r, on peut le placer après le if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (r>Valeurrembourse)
    {
      Z = X + abs((X-Y)/2);
    }
    else{
      Z = X - abs((X-Y)/2);
    }
    X=Y;
    Y=Z;
    Essaye de compiler et d'exécuter maintenant
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  16. #16
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Par contre, tu as fait des corrections qui ne sont pas correctes : tu as renommé ET la variable valremb, et la fonction valremb, de sorte qu'ils ont à nouveau le même nom ... IL FAUT des noms différents.
    Par ailleurs, tu n'as plus besoin du paramètre float v dans Valeurrembourse(...)
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include<stdio.h>
    #include<math.h>
    #include <stdlib.h>
     
    float var (float, int, int);
    float valremb(float, int, int, int, float);
     
    int main (void) 
    {
    float montantemprunt, nbremb, txinteret, valrembdonne, Var1, Valeurrembourse;
    int duree, X, Y, Z;
     
    printf("Montant du pret ? \n"); 
    scanf("%lf", &montantemprunt);
    printf("Nombre de remboursements annuels ? \n");
    scanf("%d", &nbremb);
    printf("Sur une durée (en annees)? \n");
    scanf("%d", &duree);
    printf("Valeur d'une mensualité ? \n");
    scanf("%d", &valrembdonne);
     
    montantremb = valrembdonne * duree * nbremb
     
    X = 0;
    Y = 1;
     
    do {
    Var1 = var (float txinteret, int nbremb, int duree)
    Valeurrembourse = valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
    r = valremb(Y, nbremb, duree, montantemprunt);
     
    if (r>Valeurrembourse)
    {
    X=Y
    Y=Z
    Z = X + abs((X-Y)/2);
    }
     
    else{
    X=Y
    Y=Z
    Z = X - abs((X-Y)/2);
    }
     
    }
     
    }while (abs(r1-r)<(1./100));
     
     
     
    }
     
     
    float var (float txinteret, int nbremb, int duree)
     
    {
    float v;
    v = pow((1+txinteret/nbremb),(nbremb*duree));
    return v;
    }
     
    float valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
     
    {
    float v, r;
    v = Var1(txinteret,nbremb,y);
    r = (txinteret*montantemprunt*v)/(nbremb*(v - 1));
    return r;
    }

  18. #18
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Il convient également de mettre en accord les types de variables (int ou float), avec les types des formats dans les printf (%d ou %f).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  19. #19
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Ces deux lignes ne servent à rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Var1 = var (float txinteret, int nbremb, int duree)
    Valeurrembourse = valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
    La formule de calcul de Z est erronée (c'est Y +/- ..., et pas X +/- ...).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  20. #20
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include<stdio.h>
    #include<math.h>
    #include <stdlib.h>
     
    float var (float, int, int);
    float valremb(float, int, int, int, float);
     
    int main (void) 
    {
    float montantemprunt, nbremb, txinteret, valrembdonne, Var1, Valeurrembourse;
    int duree, X, Y, Z;
     
    printf("Montant du pret ? \n"); 
    scanf("%f", &montantemprunt);
    printf("Nombre de remboursements annuels ? \n");
    scanf("%f", &nbremb);
    printf("Sur une durée (en annees)? \n");
    scanf("%d", &duree);
    printf("Valeur d'une mensualité ? \n");
    scanf("%f", &valrembdonne);
     
    montantremb = valrembdonne * duree * nbremb
     
    X = 0;
    Y = 1;
     
    do {
    Var1 = var (float txinteret, int nbremb, int duree)
    Valeurrembourse = valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
    r = valremb(Y, nbremb, duree, montantemprunt);
     
    if (r>Valeurrembourse)
    {
    X=Y
    Y=Z
    Z = X + abs((X-Y)/2);
    }
     
    else{
    X=Y
    Y=Z
    Z = X - abs((X-Y)/2);
    }
     
    }
     
    }while (abs(r1-r)<(1./100));
     
     
     
    }
     
     
    float var (float txinteret, int nbremb, int duree)
     
    {
    float v;
    v = pow((1+txinteret/nbremb),(nbremb*duree));
    return v;
    }
     
    float valremb (float txinteret, int nbremb, int duree, int montantemprunt, float v)
     
    {
    float v, r;
    v = Var1(txinteret,nbremb,y);
    r = (txinteret*montantemprunt*v)/(nbremb*(v - 1));
    return r;
    }

Discussions similaires

  1. Réponses: 16
    Dernier message: 13/01/2008, 21h28
  2. programme pour calculer la date
    Par zoheir13 dans le forum Delphi
    Réponses: 3
    Dernier message: 05/05/2007, 19h33
  3. Recherche langage et logiciel pour programme de calcul
    Par guismoman33 dans le forum Basic
    Réponses: 8
    Dernier message: 01/02/2007, 14h04
  4. Programme de calcul d'une factorielle
    Par hassen_I3 dans le forum Assembleur
    Réponses: 1
    Dernier message: 14/12/2006, 18h35
  5. comment faire un programme qui calcul la somme ?
    Par jahjouna dans le forum C++
    Réponses: 18
    Dernier message: 13/12/2006, 00h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo