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. #21
    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
     
    #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 {
    r = valremb(Y, nbremb, duree, montantemprunt);
     
    if (r>Valeurrembourse)
    {
    X=Y
    Y=Z
    Z = Y + abs((X-Y)/2);
    }
     
    else{
    X=Y
    Y=Z
    Z = Y - 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;
    }

  2. #22
    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
    Voila et comment on fait pour faire apparaitre le taux recherché?un printf + scanf?


    Je te remercie encore et encore pour ton aide c'est gentil

  3. #23
    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 me semble que tu as loupé pas mal de mes remarques, notamment à partir de la : http://www.developpez.net/forums/m4384412-15/

    Sinon, une remarque supplémentaire : X, Y et Z étant des intérêts, DOIVENT être des flottants, or abs ne travaille qu'avec des entiers : il faut utiliser fabs à la place.
    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

  4. #24
    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
    Un printf suffit pour imprimer le taux trouvé (qui se trouvera dans Y, pas dans txinteret, qui n'est pas utilisé).
    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

  5. #25
    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
    71
     
    #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, valrembdonne, Var1, Valeurrembourse, X, Y, Z;
    int duree;
     
    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 {
    r = valremb(Y, nbremb, duree, montantemprunt);
     
    if (r>Valeurrembourse)
    {
    X=Y
    Y=Z
    Z = Y + fabs((X-Y)/2);
    }
     
    else{
    X=Y
    Y=Z
    Z = Y - fabs((X-Y)/2);
    }
     
    }
     
    }while (fabs(r1-r)<(1./100));
     
     
     
    }
     
    printf("Le taux est donc de :" \n)
    scanf("%f", &Y)
     
     
    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;
    }

  6. #26
    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
    J'ai ré-écris ton programme pour le faire fonctionner chez moi. A présent, je n'ai plus de bug.
    Je ne te le donne pas immédiatement (dans un but pédagogique), car il y a encore des points erronés dans ton algorithme, comme la condition de fin du while qui n'est pas correct, et le fait que tu utilises des variables mal nommées (valrembdonne et Valeurrembourse, il faut choisir), ou mal typées (X, Y, Z).
    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

  7. #27
    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
    Mmm... tu n'as pas encore tout lu : X et Y ne sont pas mis à jour correctement, valremb a un paramètre de trop, la condition de fin du while est incorrecte.
    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

  8. #28
    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
    bon j'y réfléchis ce soir désolé je dois y aller. mais merci pour ton aide je mettrais ce soir la corrections de mes erreurs (en tout cas essayer).
    Encore merci
    A ce soir
    Bonne journée

  9. #29
    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
     
    #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, nombreremboursement, valeur1mensualite, Valeurrembourse, X, Y, Z;
    int duree;
     
    printf("Montant du pret ? \n"); 
    scanf("%f", &montantemprunt);
    printf("Nombre de remboursements annuels ? \n");
    scanf("%f", &nombreremboursement);
    printf("Sur une durée (en annees)? \n");
    scanf("%d", &duree);
    printf("Valeur d'une mensualité ? \n");
    scanf("%f", &valeur1mensualite);
     
    Valeurrembourse = valeur1mensualite * duree * nombreremboursement
     
    X = 0;
    Y = 1;
     
    do {
    r = valremb(Y, nombreremboursement, duree, montantemprunt);
     
    if (r>Valeurrembourse)
    {
    Z = Y + fabs((X-Y)/2);
    }
    else{
    Z = Y - fabs((X-Y)/2);
    }
    X=Y
    Y=Z
    }
     
    }while (fabs(Valeurrembourse-r)<(1./100));
     
     
     
    }
     
    printf("Le taux est donc de :" \n)
    scanf("%f", &Y)
     
     
    float var (float Y, int nombreremboursement, int duree)
     
    {
    float v;
    v = pow((1+Y/nombreremboursement),(nombreremboursement*duree));
    return v;
    }
     
    float valremb (float Y, int nombreremboursement, int duree, int montantemprunt, float v)
     
    {
    float v, r;
    v = var(Y, nombreremboursement, duree);
    r = (Y*montantemprunt*v)/(nombreremboursement*(v - 1));
    return r;
    }

  10. #30
    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
    Si je ne m'abuse, dans le formulaire que tu as fournis à titre d'énoncé, il n'est nul besoin de calculer Valeurrembourse, et r doit être comparé à valeur1mensualite pour le calcul de i (et également pour le calcul de la précision).

    A part cela, si ton programme compile (l'as-tu compilé), il me semble correct.
    Il faudrait encore le tester pour vérifier son comportement.

    Dans la version que j'ai écrite, j'obtiens les résultats suivants :
    Montant du pret : 10000.000000
    Nb remb/an : 12
    Nb d'années : 10
    Mensualité : 125.000000
    var(1.00, 12, 10) = 14840.64
    r=833.39 ; i = 0.50 (précision:708.38947)
    var(0.50, 12, 10) = 134.11
    r=419.80 ; i = 0.25 (précision:294.79697)
    var(0.25, 12, 10) = 11.87
    r=227.49 ; i = 0.12 (précision:102.49295)
    var(0.12, 12, 10) = 3.47
    r=146.38 ; i = 0.06 (précision:21.37617)
    var(0.06, 12, 10) = 1.87
    r=112.28 ; i = 0.09 (précision:12.71990)
    var(0.09, 12, 10) = 2.54
    r=128.71 ; i = 0.08 (précision: 3.71416)
    var(0.08, 12, 10) = 2.18
    r=120.34 ; i = 0.09 (précision: 4.66089)
    var(0.09, 12, 10) = 2.35
    r=124.49 ; i = 0.09 (précision: 0.51234)
    var(0.09, 12, 10) = 2.45
    r=126.59 ; i = 0.09 (précision: 1.59123)
    var(0.09, 12, 10) = 2.40
    r=125.54 ; i = 0.09 (précision: 0.53702)
    var(0.09, 12, 10) = 2.38
    r=125.01 ; i = 0.09 (précision: 0.01173)
    var(0.09, 12, 10) = 2.37
    r=124.75 ; i = 0.09 (précision: 0.25047)
    var(0.09, 12, 10) = 2.37
    r=124.88 ; i = 0.09 (précision: 0.11941)
    var(0.09, 12, 10) = 2.37
    r=124.95 ; i = 0.09 (précision: 0.05385)
    var(0.09, 12, 10) = 2.38
    r=124.98 ; i = 0.09 (précision: 0.02106)
    var(0.09, 12, 10) = 2.38
    r=125.00 ; i = 0.09 (précision: 0.00467)
    var(0.09, 12, 10) = 2.38
    r=125.004
    TEG = 8.689880 (précision : 0.00353)
    Dernière petite remarque : tu réalises le test de précision à la fin de la boucle, sur la base d'un r calculé avant la mise à jour de l'intérêt (mise à jour de X, Y, Z).
    Ceci signifie que lorsque l'on détecte que la précision est atteinte, on a déjà ré-évalué l'intérêt pour la boucle suivante (qui n'aura jamais lieu).
    Il aurait donc été plus judicieux de réaliser le test de précision en début de boucle, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    r = valremb(...);
    while (...) {
      calcul de X, Y, Z
      r = valremb(...)
    }
    autrement écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (r = valremb(...) ; condition_de_precision_non_atteinte ; r = valremb(...) {
      calcul de X, Y, Z
    }
    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. #31
    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
    Je comprends pas ce que vous voulez dire par : calcul X, Y et Z ? il faut mettre X = Y etc...?

    Par contre je le compilerai que vers midi car la je ne suis pas chez moi...mais je ne vois pas pourquoi cela ne marchera pas...

    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
     
    #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, nombreremboursement, valeur1mensualite, Valeurrembourse, X, Y, Z;
    int duree;
     
    printf("Montant du pret ? \n"); 
    scanf("%f", &montantemprunt);
    printf("Nombre de remboursements annuels ? \n");
    scanf("%f", &nombreremboursement);
    printf("Sur une durée (en annees)? \n");
    scanf("%d", &duree);
    printf("Valeur d'une mensualité ? \n");
    scanf("%f", &valeur1mensualite);
     
    X = 0;
    Y = 1;
     
    do {
     
    if (r>Valeurrembourse)
    {
    Z = Y + fabs((X-Y)/2);
    }
    else{
    Z = Y - fabs((X-Y)/2);
    }
    X=Y
    Y=Z
    }
     
    r = valremb(Y, nombreremboursement, duree, montantemprunt);
     
    }while (fabs(valeur1mensualite-r)<(1./100));
     
    r = valremb(Y, nombreremboursement, duree, montantemprunt);
     
     
    }
     
    printf("Le taux est donc de :" \n)
    scanf("%f", &Y)
     
     
    float var (float Y, int nombreremboursement, int duree)
     
    {
    float v;
    v = pow((1+Y/nombreremboursement),(nombreremboursement*duree));
    return v;
    }
     
    float valremb (float Y, int nombreremboursement, int duree, int montantemprunt, float v)
     
    {
    float v, r;
    v = var(Y, nombreremboursement, duree);
    r = (Y*montantemprunt*v)/(nombreremboursement*(v - 1));
    return r;
    }

  12. #32
    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
    Pour le calcul de X, Y, Z, ce n'est pas très important (un léger décalage entre le calcul de la précision, et celui de l'intérêt) : en gros, c'est comme si tu calculais i(n), alors que la précision était déjà correcte avec i(n-1).

    Sinon, pour la comparaison de r (calculé par valremb), elle se fait dans ton programme avec Valeurrembourse (dont tu as supprimé l'initialisation dans ta dernière version). Or, tu initialisais Valeurrembourse à valeur1mensualite * duree * nombreremboursement, soit le montant total de l'emprunt et des intérêts.

    Mais dans ton formulaire du post 4, tu indiques que r correspond à la valeur du remboursement mensuel :
    Sachant que la valeur d'un rembrousement c'est :

    r = (i * p * var)/(n * (var -1^))
    Donc, r doit être comparé à valeur1mensualite (celle fournie au départ), plutôt qu'à Valeurrembourse (cout total du crédit).
    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. #33
    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
     
    #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, nombreremboursement, valeur1mensualite, Valeurrembourse, X, Y, Z;
    int duree;
     
    printf("Montant du pret ? \n"); 
    scanf("%f", &montantemprunt);
    printf("Nombre de remboursements annuels ? \n");
    scanf("%f", &nombreremboursement);
    printf("Sur une durée (en annees)? \n");
    scanf("%d", &duree);
    printf("Valeur d'une mensualité ? \n");
    scanf("%f", &valeur1mensualite);
     
    X = 0;
    Y = 1;
     
    do {
     
    r = valremb(Y, nombreremboursement, duree, montantemprunt);
    if (r>Valeurrembourse)
    {
    Z = Y + fabs((X-Y)/2);
    }
    else{
    Z = Y - fabs((X-Y)/2);
    }
     
    }
     
    r = valremb(Y, nombreremboursement, duree, montantemprunt);
     
    }while (fabs(valeur1mensualite-r)<(1./100));
    X=Y;
    Y=Z;
    Z = Y + fabs((X-Y)/2);
    r = valremb(Y, nombreremboursement, duree, montantemprunt);
     
     
    }
     
    printf("Le taux est donc de :" \n);
    scanf("%f", &Y);
     
     
    float var (float Y, int nombreremboursement, int duree)
     
    {
    float v;
    v = pow((1+Y/nombreremboursement),(nombreremboursement*duree));
    return v;
    }
     
    float valremb (float Y, int nombreremboursement, int duree, int montantemprunt, float v)
     
    {
    float v, r;
    v = var(Y, nombreremboursement, duree);
    r = (Y*montantemprunt*v)/(nombreremboursement*(v - 1));
    return r;
    }

  14. #34
    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
    Tu n'as pas fait le travail de remplacement partout (dans le test de calcul des intérêts).

    Pour parfaire ton travail, je t'invite aussi à commenter chaque partie de ton programme (non pas en traduisant ce que font les instructions C, mais en précisant le traitement que tu réalises).
    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

  15. #35
    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
    En ce qui concerne les commentaires je les ferais quand j'aurai compilé le programme dans l'apres midi.
    Je te tiens au courant.
    Mais sinon c'est bon pour le programme?en ce qui concerne le calcul de X, Y et Z?

  16. #36
    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
    Ton programme va te révéler quelques erreurs à la compilation. Un conseil : indente correctement tes blocs, ça te permettra de trouver au moins une erreur.

    Ensuite, le calcul de X, Y, Z étant correct avant, sauf la condition (le if), qui permet de choisir le calcul de Z est incorrecte (voir mes messages précédents ; regarde bien ton énoncé, car il y a 2 erreurs dans la condition).
    A présent, dans ta dernière version, X et Y ne sont plus mis à jour dans la boucle, ce qui est incorrect, et va mener à une boucle infinie. Le code précédent était donc plus juste.

    La condition de fin de boucle est également incorrecte : dans ce que tu écris, tu boucles TANT QUE la précision est < 1/100 ... dans ces conditions, tu ne vas pas boucler longtemps.

    Enfin, en fin de main, lorsque tu affiches la valeur de Y, ce n'est pas scanf qu'il faut utiliser (scanf = lire au clavier), mais printf
    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. #37
    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 commencé a compilé mais maintenant tout fonctionne quand je compile tout le programme sauf la boucle et je pense quil y a une erreur mais je n'arrive pas a trouvé...

    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, nombreremboursement, valeur1mensualite, Valeurrembourse, X, Y, Z;
    int duree;
     
    printf("Montant du pret ? \n"); 
    scanf("%f", &montantemprunt);
    printf("Nombre de remboursements annuels ? \n");
    scanf("%f", &nombreremboursement);
    printf("Sur une durée (en annees)? \n");
    scanf("%d", &duree);
    printf("Valeur d'une mensualité ? \n");
    scanf("%f", &valeur1mensualite);
     
    X = 0;
    Y = 1;
     
    do {
     
    r = valremb(Y, nombreremboursement, duree, montantemprunt);
    if (r>Valeurrembourse)
    {
    Z = Y + fabs((X-Y)/2);
    }
    else{
    Z = Y - fabs((X-Y)/2);
    }
     
    }
     
    r = valremb(Y, nombreremboursement, duree, montantemprunt);
     
    }while (fabs(valeur1mensualite-r)<(1./100));
    X=Y;
    Y=Z;
    Z = Y + fabs((X-Y)/2);
    r = valremb(Y, nombreremboursement, duree, montantemprunt);
     
     
    }
     
    printf("Le taux est donc de :" \n);
    scanf("%f", &Y);
     
     
    float var (float Y, int nombreremboursement, int duree)
     
    {
    float v;
    v = pow((1+Y/nombreremboursement),(nombreremboursement*duree));
    return v;
    }
     
    float valremb (float Y, int nombreremboursement, int duree, int montantemprunt, float v)
     
    {
    float v, r;
    v = var(Y, nombreremboursement, duree);
    r = (Y*montantemprunt*v)/(nombreremboursement*(v - 1));
    return r;
    }

  18. #38
    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
    Attention, en corrigeant ton programme, tu as défini r comme entier, ce qu'il n'est pas (float).
    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. #39
    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
    je ne vois pas ou on peut voir que r est un entier (et je sais que r est un float mais je ne vois pas de probleme sur mon programme)...
    quand tu compiles mon programme ca marche?

  20. #40
    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
    Citation Envoyé par reno31450 Voir le message
    je ne vois pas ou on peut voir que r est un entier (et je sais que r est un float mais je ne vois pas de probleme sur mon programme)...
    J'ai dit cela, car à un moment donné, tu avais écris :
    A présent, r n'est même plus déclaré... il faut l'ajouter à la liste des variables de type float...
    quand tu compiles mon programme ca marche?
    Ton programme ne marchera pas, pour au deux des raisons que j'ai déjà cité.
    Mais pour avancer, il faudrait que tu disposes d'un compilateur, parce que là, je prêche un peu dans le vide
    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

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