Partage
  • Partager sur Facebook
  • Partager sur Twitter

question tuto fonction

renvoyer la fonction dans un print

    28 décembre 2005 à 21:46:00

    Bonsoir,

    voilà j'ai suivi le tuto sur les fonctions, voilà j'ai voulus faire un petit convertisseur en utilisant les fonctions mais j'arrive pas a retourner le resultat de la fonction sur un printf.

    une petit coup de pouce serait la bien venu






    #include <stdio.h>
    #include <stdlib.h>

    float convertisseur(float euros, float francs){
           
           francs=euros*6.55957;
           euros=francs/6.55957;
           float somme;
           
           if(somme==francs)
           {
           
           return francs;
           }
                  else if (somme==euros)
                  {
                      return  euros;
                      }
           
           
           }
       


    int main(int argc, char *argv[])
    {
    float somme=0;
    float euros=0;
    float francs=0;
    int menu=0;

    printf("chosir votre moanaie convertir\n");
    printf("taper 1 pour francs\n");
    printf("taper 2 pour euros\n");
    scanf("%f\n",&menu);

    if(menu==1)
    {
    somme=francs;
    printf("saisissez le montant en francs a convertir");
    scanf("%f",&somme);
    printf("%f",convertisseur(somme));
    }
            else if (menu==2)
            {
            somme=euros;
            printf("saisissez le montant en euros a convertir");
            scanf("%f",&somme);
            printf("%f",convertisseur(somme));
            }
                    else if(somme!=1&2)
                    {
                    print("désolé mais nous n'avons pas compris votre réponse");
                    }


     
     
     
      system("PAUSE");     
      return 0;
    }









    • Partager sur Facebook
    • Partager sur Twitter
      28 décembre 2005 à 21:48:08

      dans ton code, la fonction convertisseur demande 2 paramètres... et tu ne lui en donnes qu'un seul (d'ailleurs, la fonction devrait n'en demander qu'un seul :p )

      Voilà modifie simplement la déclaration de la fonction et ça ira je pense ;)

      Edit: mais tu devras créer 2 fonctions, l'une pour aller de franc à euro et l'autre de euro à francs
      • Partager sur Facebook
      • Partager sur Twitter
        28 décembre 2005 à 23:03:27

        apparament il me retourne toujours une erreur au niveau du printf



        printf("%f",convertisseurFrancs(francs));
        • Partager sur Facebook
        • Partager sur Twitter
          29 décembre 2005 à 0:34:02

          Pourrais-tu m'expliquer ta fonction Convertisseur?
          float convertisseur(float euros, float francs){
                 
                 francs=euros*6.55957;
                 euros=francs/6.55957;
                 float somme;
                 
                 if(somme==francs)
                 {
                 
                 return francs;
                 }
                        else if (somme==euros)
                        {
                            return  euros;
                            }
                 
                 
                 }


          cette variable somme te sert à quoi? surtout qu'elle contient une valeur indéterminée :D
          Je crois que ton erreur pourrait se cacher là.
          • Partager sur Facebook
          • Partager sur Twitter
            29 décembre 2005 à 8:00:28

            la fonction prend la variable francs saisie par l'utilisateur et la divise par 6.55957.

            pour ce qui est de sommmes dans mon deuxieme code elle n'existe plus.



            #include <stdio.h>
            #include <stdlib.h>

            float convertisseurFrancs(float francs, float euros){
                   
                   francs=euros*6.55957;
               
                   return francs;
                   }
                   
                   
                   
                float convertisseurEuros(float euros, float francs){
                   
                   euros=francs/6.55957;
               
                   return euros;
                   }   
                     


            int main(int argc, char *argv[])
            {

            float euros=0;
            float francs=0;
            int menu=0;

            printf("chosir votre monaie à convertir\n");
            printf("taper 1 pour francs\n");
            printf("taper 2 pour euros\n");
            scanf("%f\n",&menu);

            if(menu==1)
            {

            printf("saisissez le montant en francs a convertir");
            scanf("%f",&francs);
            printf("%f",convertisseurFrancs(francs));
            }
                    else if (menu==2)
                    {
                   
                    printf("saisissez le montant en euros a convertir");
                    scanf("%f",&euros);
                    printf("%f",convertisseurEuros(euros));
                    }
                            else if(menu!=1&2)
                            {
                            print("désolé mais nous n'avons pas compris votre réponse");
                            }


             
             
             
              system("PAUSE");     
              return 0;
            }


            • Partager sur Facebook
            • Partager sur Twitter
              29 décembre 2005 à 8:15:09

              Tu n'as besoin que d'un paramètres pour ta fonction de conversion pourquoi tu en a deux ?
              • Partager sur Facebook
              • Partager sur Twitter
                29 décembre 2005 à 9:28:10

                remplace:
                float convertisseurFrancs(float francs, float euros){
                       
                       francs=euros*6.55957;
                   
                       return francs;
                       }
                       
                       
                       
                    float convertisseurEuros(float euros, float francs){
                       
                       euros=francs/6.55957;
                   
                       return euros;
                       }

                par:
                float convertisseurFrancs(float francs){
                       
                       float euros=francs/6.55957;
                   
                       return euros;
                       }
                       
                       
                       
                    float convertisseurEuros(float euros){
                       
                       float francs=euros*6.55957;
                   
                       return francs;
                       }

                • Partager sur Facebook
                • Partager sur Twitter
                  29 décembre 2005 à 10:20:12

                  Essaye de mieux indenter ton code aussi.
                  C'est très spécial de décaler le elseif par rapport au if alors qu'ils sont au "même niveau" dans la boucle...

                  Par contre n'hésite pas à appuyer sur tab quand tu écris les instructions qui sont dans un if:

                  if(condition)
                  {
                          instruction;
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 décembre 2005 à 10:54:47

                    Il y a une options dans Dev-C++ qui permet d'indenter automatiquement.
                    "Outils/Options de l'éditeur" puis cocher "identation automatique"
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 décembre 2005 à 11:41:18

                      BouBoulMan désolé de te décevoir mais le seul logiciel qui indente automatiquement et bien c'est emacs :) avec emacs impossible d'avoir du code pas indenté
                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 décembre 2005 à 12:10:54

                        Désolé de devoir me voir (ben oui le contraire de décevoir -> cevoir ou "se voir".. bon ok c'était nul...)
                        mais chez moi l'éditeur Dev-C++ indente automatiquement :D
                        • Partager sur Facebook
                        • Partager sur Twitter
                          29 décembre 2005 à 13:16:42

                          Citation : asmanur

                          Tu n'as besoin que d'un paramètres pour ta fonction de conversion pourquoi tu en a deux ?



                          oui en effet, mais si tu mets juste convertisseur(float francs)
                          tu est obligé de créer une variable euros.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            30 décembre 2005 à 7:42:02

                            je viens de resoudre mon erreur, une erreur dans ma fonction
                            • Partager sur Facebook
                            • Partager sur Twitter
                              30 décembre 2005 à 8:13:35

                              Citation : BoudBoulMan

                              Désolé de devoir me voir (ben oui le contraire de décevoir -> cevoir ou "se voir".. bon ok c'était nul...)
                              mais chez moi l'éditeur Dev-C++ indente automatiquement :D


                              Hum, c'est quoi que t'appelles l'indentation automatique ? Avec Emacs tu appuies sur tab au début de la ligne il trouve tout seul le niveau 'indentation et ne se planet jamais (ou s'il se plante c'est que tu as oublié une parenthèses ou un point virgule )
                              Ce que tu appelles indentation automatique c'est le fait quand tu ouvres une accolade de if (ou autres...)le curseur se décale ? Ouhaha vive l'indentation automatique.

                              burinho > oui mais tu la créé en local ta variable francs ou tu retournes le résultat direct ;)
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                30 décembre 2005 à 9:32:42

                                Citation : asmanur

                                Citation : BoudBoulMan

                                Désolé de devoir me voir (ben oui le contraire de décevoir -> cevoir ou "se voir".. bon ok c'était nul...)
                                mais chez moi l'éditeur Dev-C++ indente automatiquement :D


                                Hum, c'est quoi que t'appelles l'indentation automatique ? Avec Emacs tu appuies sur tab au début de la ligne il trouve tout seul le niveau 'indentation et ne se planet jamais (ou s'il se plante c'est que tu as oublié une parenthèses ou un point virgule )
                                Ce que tu appelles indentation automatique c'est le fait quand tu ouvres une accolade de if (ou autres...)le curseur se décale ? Ouhaha vive l'indentation automatique.

                                burinho > oui mais tu la créé en local ta variable francs ou tu retournes le résultat direct ;)


                                Oui mais Dev-C++ aussi a une fonction d'indentation, c'est avec Ctrl+Shift+U pour désindenter tout un bloc et Ctrl+Shift+I pour indenter un bloc
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  30 décembre 2005 à 11:56:43

                                  Citation : asmanur

                                  Ce que tu appelles indentation automatique c'est le fait quand tu ouvres une accolade de if (ou autres...)le curseur se décale ? Ouhaha vive l'indentation automatique.


                                  Ben à part ça une identation automatique ne sert à rien, vu qu'avec ça, on appuie quasi jamais sur TAB donc le programme qui se décale toujours au bonne endroit sert pas tout le temps, surtout que c'est facile de voir où tu dois mettre ta tabulation.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    30 décembre 2005 à 12:55:03

                                    bonjour,

                                    moi pour l'indentation je decale chaque if vers la droite,
                                    sinon j'utilise kwrite et kate sous debian kde.


                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      30 décembre 2005 à 16:16:35

                                      BoudboulMan> j'ai oublié de dire, il indente automatiquement chaque ligne qui est en train d'etre tapé à la première parenthèse/point-virgule tapé, cela va de soit :D

                                      burinho> T'es sous linux et tu fournis un code pas indenté ? tu pourrais le passer à la moulinette indent et en plus tu dois avoir emacs d'installer, tu n'as aucune excuse pour pas indenter ton code :)
                                      PS : passe sous gnome ;)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        30 décembre 2005 à 18:33:23

                                        Salut,
                                        je viens de voir une erreur au niveau du dernier else if : tu fais else if(somme!=1&2), ce qui se traduit pas : "si menu est different de 0", et donc ne va toujours faire la dernière instructions si somme != 0. Pour regler sa, tu dois faire 2 conditions relié avec un 'et' logique : else if(somme != 1 && somme != 2).

                                        PS : l'operateur binaire & (il y a aussi l'operateur unaire qui sert a autre chose pour extraire l'adresse) correspond au 'et' binaire (Ex : 8362&4 retourne 0, car le bit n°3 (qui correspond a 2^2, donc 4) n'est pas activé dans ce nombre).
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          30 décembre 2005 à 19:11:56

                                          hum tif tof je suis pas sur que tu comprennes bien la notion d'opérateur bit à bit exemple : 1&2 = 0 car
                                          00001 &
                                          00010 =
                                          00000
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            30 décembre 2005 à 20:12:12

                                            Je me suis embrouillé avec autre chose ^^

                                            J'edit
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              30 décembre 2005 à 21:43:51

                                              je vois pas ou mon code est pas indenter..

                                              je suis bien sous linux kde,

                                              de temps en sur devc++

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                31 décembre 2005 à 8:27:06

                                                Hein, je vais te montrer le code indenté, tu ne peux pas nier la différence au niveau lisibilité



                                                #include <stdio.h>
                                                #include <stdlib.h>

                                                float convertisseurFrancs(float euros)
                                                {
                                                    float francs=euros*6.55957;
                                                    return francs;
                                                }



                                                float convertisseurEuros(float francs)
                                                {
                                                    float euros=francs/6.55957;
                                                    return euros;
                                                }



                                                int main(int argc, char *argv[])
                                                {

                                                    float euros=0;
                                                    float francs=0;
                                                    int menu=0;
                                                   
                                                    printf("chosir votre monaie à convertir\n");
                                                    printf("taper 1 pour francs\n");
                                                    printf("taper 2 pour euros\n");
                                                    scanf("%f\n",&menu);
                                                   
                                                    if(menu==1)
                                                    {
                                                   
                                                        printf("saisissez le montant en francs a convertir");
                                                        scanf("%f",&francs);
                                                        printf("%f",convertisseurFrancs(francs));
                                                    }
                                                    else if (menu==2)
                                                    {
                                                   
                                                        printf("saisissez le montant en euros a convertir");
                                                        scanf("%f",&euros);
                                                        printf("%f",convertisseurEuros(euros));
                                                    }
                                                    else if(menu!=1&2)
                                                    {
                                                        print("désolé mais nous n'avons pas compris votre réponse");
                                                    }
                                                   
                                                   
                                                   
                                                   
                                                   
                                                    system("PAUSE");
                                                    return 0;
                                                }

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Anonyme
                                                  31 décembre 2005 à 8:28:42

                                                  C'est tout de suite mieux
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    31 décembre 2005 à 10:52:00

                                                    Citation : asmanur

                                                    Hein, je vais te montrer le code indenté, tu ne peux pas nier la différence au niveau lisibilité



                                                    #include <stdio.h>
                                                    #include <stdlib.h>

                                                    float convertisseurFrancs(float euros)
                                                    {
                                                        float francs=euros*6.55957;
                                                        return francs;
                                                    }



                                                    float convertisseurEuros(float francs)
                                                    {
                                                        float euros=francs/6.55957;
                                                        return euros;
                                                    }



                                                    int main(int argc, char *argv[])
                                                    {

                                                        float euros=0;
                                                        float francs=0;
                                                        int menu=0;
                                                       
                                                        printf("chosir votre monaie à convertir\n");
                                                        printf("taper 1 pour francs\n");
                                                        printf("taper 2 pour euros\n");
                                                        scanf("%f\n",&menu);
                                                       
                                                        if(menu==1)
                                                        {
                                                       
                                                            printf("saisissez le montant en francs a convertir");
                                                            scanf("%f",&francs);
                                                            printf("%f",convertisseurFrancs(francs));
                                                        }
                                                        else if (menu==2)
                                                        {
                                                       
                                                            printf("saisissez le montant en euros a convertir");
                                                            scanf("%f",&euros);
                                                            printf("%f",convertisseurEuros(euros));
                                                        }
                                                        else if(menu!=1&2)
                                                        {
                                                            print("désolé mais nous n'avons pas compris votre réponse");
                                                        }
                                                       
                                                       
                                                       
                                                       
                                                       
                                                        system("PAUSE");
                                                        return 0;
                                                    }



                                                    AH! ok, moi je fesais comme en html je décale chaque block vers la droite.

                                                    du coup j'ai essayé d'améliorer mon programme en utilisant une boucle "for" afin d'éviter de relancé chaque fois le convertisseur mais ça marche pas des masses.



                                                    for(menu=0; menu>=0; menu++)
                                                    {
                                                            if(menu==1)
                                                            {
                                                            printf("saisissez le montant en francs a convertir\n");
                                                            scanf("%f",&euros);
                                                            printf("%.2f\n",convertisseurFrancs(euros));
                                                            }
                                                           
                                                            if(menu==2)
                                                            {
                                                            printf("saisissez le montant en euros a convertir\n");
                                                            scanf("%.2f",&francs);
                                                            printf("%f\n",convertisseurEuros(francs));
                                                            }
                                                           
                                                           










                                                    ps:Apparament sur ce forum on ne peut poster qu'un post tout les 12h,



                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    question tuto fonction

                                                    × 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