Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme avec les fonctions

Sujet résolu
Anonyme
    22 juin 2017 à 18:15:51

    bonjour, j'étais entrain de lire le cour du SDZ sur la programmation en C puis une chose m'a intrigué (le cour sur les fonctions)la fonction permettant de convertir les euros en francs je l'ai essayée avec un scanf mais ca ne marche pas voici le code :
    #include <stdio.h>
    #include <stdlib.h>
    
    double lol(double euros)
    {
        double franc=0;
        
        franc=6,55957 * euros;
        return franc;
    
    }
    
    int main()
    {
        double mdr=0;
         scanf("%lf",&mdr);
    
    
        printf("%fFrancs\n",lol(mdr));
    
        return 0;
    }
    
    jen e comprends pas pourquoi le resultat correct ne s'affiche pas exemple je tape 10 le code me renvoie 6 francs
    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2017 à 18:52:11

      Salut,

      Normalement un compilateur bien réglé (avec les avertissement activés, -Wall) aurait dû t'afficher

      main.c: In function ‘lol’:
      main.c:8:12: warning: right-hand operand of comma expression has no effect [-Wunused-value]
           franc=6,55957 * euros;

      Si tu remplaces 6,55957 par 6.55975 tu devrais avoir un programme qui fonctionne.

      Quelques remarques:

      • Le nom que tu donnes à tes fonctions devrait en soi déjà indiquer ce que la fonction fait (par exemple convertEuroToFranc ou quelque chose du genre)
      • Tu peux raccourcir ta fonction,
        return 6.55957 * euros;
        est largement suffisant.

      Cordialement.

      -
      Edité par VaultBoy 1 juillet 2017 à 10:48:05

      • Partager sur Facebook
      • Partager sur Twitter
        22 juin 2017 à 18:59:00

        Bonjour, pour insérer un nombre à virgule, il faut utiliser la notation avec un point. Par exemple :

        5.32     // ✔
        6.55957  // ✔
        3,14     // ✘

        Le warning ...

        b.c: In function ‘lol’:
        b.c:8:12: warning: right-hand operand of comma expression has no effect [-Wunused-value]
             franc=6,55957 * euros;

        ... est, on ne peut plus éloquent. Ici, la virgule ne fait pas ce que tu penses. Si tu es curieux, tu peux t'informer sur cet opérateur qui se nomme en anglais « comma operator ».

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          23 juin 2017 à 5:16:25

          Merci beaucoup c'est une erreur de debutant (je me suis toujours dis que c'a ne m'arriverai jamais :ange:).

          quant au nom de mes variables :diable: ne vous inquietez c'etait un programme fais sur un coup de tete je ne voulais pas perdre trop de temps

          • Partager sur Facebook
          • Partager sur Twitter
            23 juin 2017 à 11:18:43

            ghilesdegheb a écrit:

            quant au nom de mes variables :diable: ne vous inquietez c'etait un programme fais sur un coup de tete je ne voulais pas perdre trop de temps

            Bonjour

            Tu as de la chance que ton programme soit aussi court, sinon personne n'aurait perdu du temps à essayer de comprendre son sens.

            • Partager sur Facebook
            • Partager sur Twitter
              23 juin 2017 à 18:38:25

              Une remarque : le format pour lire un 'double' est %lf, mais c'est aussi le format pour écrire un 'double'. C'est vrai que la fonction 'printf' accepte aussi le format %f (pour une raison de conversion implicite, je crois), mais je trouve que ça embrouille d'utiliser deux formats différents pour le même type. Comme certains cours utilisent ces deux formats, j'ai longtemps cru que 'printf' et 'scanf' n'utilisaient pas les mêmes et ça m'avait bien embrouillé. Alors qu'en fait c'est simple : %lf pour les 'double' épicétou.

              • Partager sur Facebook
              • Partager sur Twitter
                23 juin 2017 à 19:02:23

                En fait %f dans printf est pour les double, si l'argument est un float il est converti en double.
                • Partager sur Facebook
                • Partager sur Twitter

                probleme avec les fonctions

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown