Convertisseur en C , Ou est l'erreur ?

Résolu/Fermé
Turki1923 Messages postés 535 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 13 octobre 2018 - 13 mars 2011 à 19:41
Turki1923 Messages postés 535 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 13 octobre 2018 - 13 mars 2011 à 22:45
Bonjour,

j'ai un petit problème , donc je ne trouve pas l'erreur , j'ai coder un convertisseur sa compile mais quand je tappe la valeur de euro mon programme me donne toujour 0.00000 comme réponse . voici mon code(essayer le vous comprendez mieu) :
#include <stdio.h>
#include <stdlib.h>
    double pointeurConvertisseur(double *euro , double *franc , double *lira , double *dollar  , int choixMonnaie , int convertirEnQuoi);



    int main(int argc, char *argv[])
{
    int choixMon = 0 , convertirEn = 0 ;
    double  e = 0 , f = 0 , l = 0 , d = 0 ;
    printf  ("Voici les monnaies que vous pouvez convertir :  \n");
    printf ("1 - Euro \n");
    printf ("2 - Franc \n");
    printf ("3 - Lira \n");
    printf ("4 - Dollar \n");
    printf ("Votre choix ?  ");
    scanf ("%d" , &choixMon);
    printf ("\nEn quoi voulez-vous le convertir ? \n");
    printf ("1 - Euro \n");
    printf ("2 - Franc \n");
    printf ("3 - Lira \n");
    printf ("4 - Dollar \n");
    printf ("Votre choix ?  ");
    scanf ("%d" , &convertirEn);
    pointeurConvertisseur(&e,&f,&l,&d,choixMon,convertirEn);
    printf ("\n sa fait : %f" , pointeurConvertisseur);
}



    double pointeurConvertisseur(double *euro , double *franc , double *lira , double *dollar , int choixMonnaie , int convertirEnQuoi)
{
    double resultat = 0 ;
    switch(choixMonnaie)
{
    case 1 :
    printf ("\nvous avez choisis l'Euro que vous voulez convertir en  ");
    break;
    case 2 :
    printf ("\nvous avez choisis le Franc que vous voulez convertir en ");
    break;
    case 3 :
    printf ("\nvous avez choisis le Lira que vous voulez convertir en ");
    break;
    case 4 :
    printf ("\nvous avez choisis le Dollar que vous voulez convertir en ");
    break;
    default :
    printf ("\nvous avez tapper le mauvais chiffre \n");
    break ;
    }
    switch(convertirEnQuoi)
    {
        case 1 :
        printf ("Euro");
        break ;
        case 2 :
        printf ("Franc");
        break ;
        case 3 :
        printf ("Lira");
        break;
        case 4 :
        printf ("Dollar");
        break ;
        default :
        printf ("vous avez tapper le mauvais chiffre\n");
        break;

}
if(choixMonnaie == 1 && convertirEnQuoi == 2)
{
    printf ("\nCombien d'euro avez-vous ?  ");
    scanf ("%d" , euro);
    resultat =  5.5 * *euro ;
}
else if(choixMonnaie == 1 && convertirEnQuoi == 3)
{
       printf ("\nCombien d'euro avez-vous ?  ");
       scanf ("%d" , euro);
    resultat =  10.5 * *euro ;
}
return resultat ;
}


Mon problème est dans le dernier printf dans le main() , la réponse est toujour 0.00000 ,

Merci d'avance pour vos réponses.

A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
13 mars 2011 à 20:32
J'ai pas tout lu.
Mais, il y a au moins : scanf ("%d" , euro);
euro est un double*, il faut donc mettre = scanf("%lf",euro); (L minuscule).
Cdlt,
1
Turki1923 Messages postés 535 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 13 octobre 2018 10
13 mars 2011 à 21:04
Oui vous avez raison je corrige , mais sa ne résou pas mon problème la réponse final est toujour 0.000000 :(
0
JooS Messages postés 2468 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
13 mars 2011 à 21:20
Salut, ça serai pas plutôt ça ...
scanf ("%lf" ,&euro);
??!!
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
Modifié par fiddy le 13/03/2011 à 21:25
J'ai relu ton code, et t'as fait une belle faute.
pointeurConvertisseur(&e,&f,&l,&d,choixMon,convertirEn);
printf ("\n sa fait : %f" , pointeurConvertisseur);

C'est pas comme ça qu'on affiche la valeur de retour d'une fonction.
On déclare la variable valeur (par exemple) : double valeur;
On appelle la fonction : valeur=pointeurConvertisseur(&e,...);
Puis pour afficher : printf("...%f",valeur);
Ou tu peux faire directement : printf("%f",pointeurConvertisseur(&e,...));
Mais dans ce cas, tu devras rappeler la fonction si tu veux à nouveau la valeur. Donc pas trop conseillé en général.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
13 mars 2011 à 21:59
A JooS,
Non c'est bien euro et pas &euro. Regarde bien le prototype de la fonction, il s'agit de double *euro.
0
.N Messages postés 25 Date d'inscription samedi 12 mars 2011 Statut Membre Dernière intervention 17 mars 2011 559
13 mars 2011 à 21:27
Bon, je vois que tu sembles commencer à apprendre le C. Il faut donc être indulgent, je suppose. Mais bon, sans vouloir t'offenser, ton code est une vraie soupe. Ceci dit, voici l'erreur :
pointeurConvertisseur(&e,&f,&l,&d,choixMon,convertirEn);
printf ("\n sa fait : %f" , pointeurConvertisseur);

Je ne comprend pas la logique qui t'a amené à écrire ça, mais la première ligne est superflue, et la seconde devrait être :
printf ("\n sa fait : %f" , pointeurConvertisseur(&e,&f,&l,&d,choixMon,convertirEn));
1
Turki1923 Messages postés 535 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 13 octobre 2018 10
13 mars 2011 à 22:45
Merci fiddy et .N

vos postes résou mon problème ,

Et oui je sais que mon code est baclé mais bon je suis un débutant comme tu le dit , je fais se petit programme juste pour retenir les fonctions et m'entrainer un peu .

A++

maintenant je peux terminer mon convertisseur à 2 franc :D
0