Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme Lors Compilation D'une Fonction

Structure D'un Nombre Rationnels

Sujet résolu
    26 novembre 2008 à 21:16:02

    Salut Les Zeros :D

    Je Suis Nouveau Dans Le Site Du Zero , Et J'ai Eu Un Grand Probleme Dans Un TP . o_O

    Il S'agit De L'exercice Suivant : :p


    Exercice :

    a) Ecrire Une Structure Qui Définit Un Nombre Rationnel
    b) Ecrire Une Fonction Qui Calcule La Somme De 2 Nombres Rationnels
    c) Ecrire Une Fonction Qui Calcule La Soustraction De 2 Nombres Rationnels
    d) Ecrire Une Fonction Qui Calcule La Multiplication De 2 Nombres Rationnels
    e) Ecrire Une Fonction Qui Calcule La Division De 2 Nombres Rationnels
    f) Faire Un Programme Qui Présente Un Menu En Faisant Appel A Toutes Les Fonctions Ci-Dessus. <question></question>

    Le Probleme Que J'ai Eu C'est La Question f)
    J'ai Eu Deux Idées Pour Résoudre Le Probleme

    Voiçi Mes Deux Codes Qui Me Donne Une Erreur Leur La Compilation : :)

    #include <stdio.h>
    #include <stdlib.h>
    
    struct nb_rat // Je Declare La Variable
    {
           int num;
           int den;
    };
    // Déclaration Des Variables Et Affichage De Données
    int main(void)
    {
             struct nb_rat ratio ;
             printf("donner le numerateur");
             scanf("%d", &ratio.num);
             printf("donner le denumerateur");
             scanf("%d", &ratio.den);
             int a, b, c;
             char oper;
             struct nb_rat add(struct nb_rat a , struct nb_rat b )
             // Fonction De La Somme
             {
                    struct nb_rat c;
                    c.num = (a.num*b.den)+(a.den*b.num);
                    c.den = a.den*b.den;
                    return c ;
                    }
             // Fonction De La Soustraction
              struct nb_rat soust(struct nb_rat a , struct nb_rat b )
             {
                    struct nb_rat c;
                    c.num = (a.num*b.den)-(a.den*b.num);
                    c.den = a.den*b.den;
                    return c ;
                    }
             // Fonction De La Multiplication
                  struct nb_rat mult(struct nb_rat a , struct nb_rat b )
             {
                    struct nb_rat c;
                    c.num = a.num*b.num;
                    c.den = a.den*b.den;
                    return c ;
                    } 
             // Fonction De La Division
                struct nb_rat div(struct nb_rat a , struct nb_rat b )
             {
                    struct nb_rat c;
                    c.num = a.num*b.den;
                    c.den = a.den*b.num;
                    return c ;
                    }
             // Résultat Du Programme
              printf("quelle operation voulez vous effectuer");
              scanf("%c",&oper);  
              switch(oper)
              {
                          case"+"; struct nb_rat c = add(struct nb_rat a , struct nb_rat b ); break; 
                          case"-"; struct nb_rat c = soust(struct nb_rat a , struct nb_rat b ); break;
                          case"*"; struct nb_rat c = mult(struct nb_rat a , struct nb_rat b ); break;
                          case"/"; struct nb_rat c = div(struct nb_rat a , struct nb_rat b ); break;
                          }       
      system("PAUSE");	
      return 0;
    }
    



    Mon Deuxieme Code :

    #include <stdio.h>
    #include <stdlib.h>
    
    struct nb_rat // Je Declare La Variable
    {
           int num;
           int den;
    };
    int main(void)
    {
             struct nb_rat ratio ;
             printf("donner le numerateur");
             scanf("%d", &ratio.num);
             printf("donner le denumerateur");
             scanf("%d", &ratio.den);
             int a, b, c;
             char oper;
             nb_rat add(nb_rat a , nb_rat b )
             {
                    nb_rat c;
                    c.num = (a.num*b.den)+(a.den*b.num);
                    c.den = a.den*b.den;
                    return c ;
                    }
              nb_rat soust(nb_rat a , nb_rat b )
             {
                    nb_rat c;
                    c.num = (a.num*b.den)-(a.den*b.num);
                    c.den = a.den*b.den;
                    return c ;
                    }
                  nb_rat mult(nb_rat a , nb_rat b )
             {
                    nb_rat c;
                    c.num = a.num*b.num;
                    c.den = a.den*b.den;
                    return c ;
                    } 
                nb_rat div(nb_rat a , nb_rat b )
             {
                    nb_rat c;
                    c.num = a.num*b.den;
                    c.den = a.dem*b.num;
                    return c ;
                    }
              printf("quelle operation voulez vous effectuer");
              scanf("%c",&oper);  
              switch(oper)
              {
                          case"+"; nb_rat c = add(nb_rat a , nb_rat b ); break; 
                          case"-"; nb_rat c = soust(nb_rat a , nb_rat b ); break;
                          case"*"; nb_rat c = mult(nb_rat a , nb_rat b ); break;
                          case"/"; nb_rat c = div(nb_rat a , nb_rat b ); break;
                          }       
      system("PAUSE");	
      return 0;
    }
    


    Est Ce Que Je Peux Trouver De L'aide Pour Ce Probleme , Seulement La Question F

    Et Merci
    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2008 à 21:25:44

      j ai lu en vitesse et vu que tu as declaré a b et c en int au lieu de nb_rat
      • Partager sur Facebook
      • Partager sur Twitter
        26 novembre 2008 à 21:31:30

        Tu peut nous dire l'erreur de compilation stp ?
        Et tu peut éviter d'écrire un majuscule a chaque mot :-° ... Ce sert a rien et ca rend pas le texte plus beau .
        • Partager sur Facebook
        • Partager sur Twitter
          26 novembre 2008 à 22:00:32

          Citation : Mircko

          j ai lu en vitesse et vu que tu as declaré a b et c en int au lieu de nb_rat



          Ok je vais essayer de declarer en nb_rat
          Merci bcp

          Citation : cgizmo

          Tu peut nous dire l'erreur de compilation stp ?
          Et tu peut éviter d'écrire un majuscule a chaque mot :-° ... Ce sert a rien et ca rend pas le texte plus beau .


          je vais la poster et merci mon frere ;)

          Voiçis L'erreur que je reçois :

          Image utilisateur
          • Partager sur Facebook
          • Partager sur Twitter
            26 novembre 2008 à 22:57:43

            int main(void)
            {
                     /* ... */
                     nb_rat add(nb_rat a , nb_rat b )
                     {
                            nb_rat c;
                            c.num = (a.num*b.den)+(a.den*b.num);
                            c.den = a.den*b.den;
                            return c ;
                            }
                      nb_rat soust(nb_rat a , nb_rat b )
                     {
                            nb_rat c;
                            c.num = (a.num*b.den)-(a.den*b.num);
                            c.den = a.den*b.den;
                            return c ;
                            }
                          nb_rat mult(nb_rat a , nb_rat b )
                     {
                            nb_rat c;
                            c.num = a.num*b.num;
                            c.den = a.den*b.den;
                            return c ;
                            } 
                        nb_rat div(nb_rat a , nb_rat b )
                     {
                            nb_rat c;
                            c.num = a.num*b.den;
                            c.den = a.dem*b.num;
                            return c ;
                            }
            }
            

            Une fonction ne contient que des appels à d'autres fonctions. La définition d'une fonction se fait en dehors de tout bloc d'instructions.
            • Partager sur Facebook
            • Partager sur Twitter
              26 novembre 2008 à 23:08:51

              Même erreur
              #include <stdio.h>
              #include <stdlib.h>
              
              struct nb_rat // Je Declare La Variable
              {
                     int num;
                     int den;
              };
              int main(void)
              {
                       /* ... */
                       nb_rat add(nb_rat a , nb_rat b )
                       {
                              nb_rat c;
                              c.num = (a.num*b.den)+(a.den*b.num);
                              c.den = a.den*b.den;
                              return c ;
                              }
                        nb_rat soust(nb_rat a , nb_rat b )
                       {
                              nb_rat c;
                              c.num = (a.num*b.den)-(a.den*b.num);
                              c.den = a.den*b.den;
                              return c ;
                              }
                            nb_rat mult(nb_rat a , nb_rat b )
                       {
                              nb_rat c;
                              c.num = a.num*b.num;
                              c.den = a.den*b.den;
                              return c ;
                              } 
                          nb_rat div(nb_rat a , nb_rat b )
                       {
                              nb_rat c;
                              c.num = a.num*b.den;
                              c.den = a.dem*b.num;
                              return c ;
                              }
                        printf("quelle operation voulez vous effectuer");
                        scanf("%c",&oper);  
                        switch(oper)
                        {
                                    case"+"; nb_rat c = add(nb_rat a , nb_rat b ); break; 
                                    case"-"; nb_rat c = soust(nb_rat a , nb_rat b ); break;
                                    case"*"; nb_rat c = mult(nb_rat a , nb_rat b ); break;
                                    case"/"; nb_rat c = div(nb_rat a , nb_rat b ); break;
                                    }       
                system("PAUSE");	
                return 0;
              }
              

              Merci mon frere
              • Partager sur Facebook
              • Partager sur Twitter
                26 novembre 2008 à 23:12:35

                C'est une blague ? J'ai juste cité ton code en remplaçant les lignes qui ne concernaient pas ma remarque par "/* ... */".
                Tu as une idée un peu de ce que tu écris ou pas du tout ? T'as pas quand même cru que j'allais te filer une réponse toute faite ?
                • Partager sur Facebook
                • Partager sur Twitter
                  26 novembre 2008 à 23:25:59

                  Pardon , mais je suis un débutant et c'est ma 3 éme séance de TP et j'ai trouvé un probleme dans ce chapitre
                  est ce que je dois les remplacer avec les autres fonctions ?
                  et merci bcp

                  Et même erreur apres que j'ai remplacé la fonction , je suis confus :(
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 novembre 2008 à 23:29:40

                    Citation : RootShellvb

                    est ce que je dois les remplacer avec les autres fonctions ?


                    Remplacer quoi avec quoi ? J'ai rien compris.

                    Tout ce que tu as à faire, c'est définir toutes tes fonctions en dehors du main.
                    Sais tu ce qu'est une fonction ? Sais tu ce qu'est la définition d'une fonction ? Sais tu ce qu'est un appel de fonction ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 novembre 2008 à 1:16:06

                      bonjour RootShellvb,

                      voici un bout de code à améliorer, je suis débutant comme toi donc ce code n'est pas le meilleur.

                      #include <stdio.h>
                      #include <stdlib.h>
                      
                      typedef struct nombre_rationnel nombre_rationnel;
                      
                      struct nombre_rationnel
                      {
                             long numerateur;
                             long denominateur;
                      };
                      
                      nombre_rationnel addition(nombre_rationnel a,nombre_rationnel b)
                      {
                           nombre_rationnel c;
                           c.numerateur = (a.numerateur*b.denominateur)+(a.denominateur*b.numerateur);
                           c.denominateur = a.denominateur*b.denominateur;
                           return c;
                      }
                      
                      nombre_rationnel soustraction(nombre_rationnel a,nombre_rationnel b)
                      {
                           nombre_rationnel c;
                           c.numerateur = (a.numerateur*b.denominateur)-(a.denominateur*b.numerateur);
                           c.denominateur = a.denominateur*b.denominateur;
                           return c;
                      }
                      
                      nombre_rationnel multiplication(nombre_rationnel a,nombre_rationnel b)
                      {
                           nombre_rationnel c;
                           c.numerateur = a.numerateur*b.numerateur;
                           c.denominateur = a.denominateur*b.denominateur;
                           return c;
                      }
                      
                      nombre_rationnel division(nombre_rationnel a,nombre_rationnel b)
                      {
                           nombre_rationnel c;
                           c.numerateur = a.numerateur*b.denominateur;
                           c.denominateur = a.denominateur*b.numerateur;
                           return c;
                      }
                      
                      int main(void)
                      {
                           nombre_rationnel nr1;
                           nombre_rationnel nr2;
                           nombre_rationnel retour_fonction;
                      
                           char operateur=(char)NULL;
                      
                           int vide_buffer=0;
                      
                           printf("donner le numerateur du nombre rationnel 1 ?");
                           scanf("%ld", &nr1.numerateur);
                           while ((vide_buffer=fgetc(stdin))!='\n'&&vide_buffer!=EOF)
                           {
                           }
                      
                           printf("\ndonner le denominateur du nombre rationnel 1 ?");
                           scanf("%ld", &nr1.denominateur);
                           vide_buffer=0;
                           while ((vide_buffer=fgetc(stdin))!='\n'&&vide_buffer!=EOF)
                           {
                           }
                      
                           printf("\n\ndonner le numerateur du nombre rationnel 2 ?");
                           scanf("%ld", &nr2.numerateur);
                           vide_buffer=0;
                           while ((vide_buffer=fgetc(stdin))!='\n'&&vide_buffer!=EOF)
                           {
                           }
                      
                           printf("\ndonner le denominateur du nombre rationnel 2 ?");
                           scanf("%ld", &nr2.denominateur);
                           vide_buffer=0;
                           while ((vide_buffer=fgetc(stdin))!='\n'&&vide_buffer!=EOF)
                           {
                           }
                      
                           printf("\n\nquelle operation voulez vous effectuer ?");
                           operateur=getchar();
                           vide_buffer=0;
                           while ((vide_buffer=fgetc(stdin))!='\n'&&vide_buffer!=EOF)
                           {
                           }
                      
                           switch((long)operateur)
                           {
                                case 43:
                                {
                                // addition
                                retour_fonction=addition(nr1,nr2);
                                printf("addition de %ld/%ld + %ld/%ld = %ld/%ld\n\n",nr1.numerateur,nr1.denominateur,nr2.numerateur,nr2.denominateur,retour_fonction.numerateur,retour_fonction.denominateur);
                      
                                break;
                                }
                                case 45:
                                {
                                // soustraction
                                retour_fonction=soustraction(nr1,nr2);
                                printf("addition de %ld/%ld - %ld/%ld = %ld/%ld\n\n",nr1.numerateur,nr1.denominateur,nr2.numerateur,nr2.denominateur,retour_fonction.numerateur,retour_fonction.denominateur);
                      
                                break;
                                }
                                case 42:
                                {
                                // multiplication
                                retour_fonction=multiplication(nr1,nr2);
                                printf("addition de %ld/%ld * %ld/%ld = %ld/%ld\n\n",nr1.numerateur,nr1.denominateur,nr2.numerateur,nr2.denominateur,retour_fonction.numerateur,retour_fonction.denominateur);
                      
                                break;
                                }
                                case 47:
                                {
                                // division
                                retour_fonction=division(nr1,nr2);
                                printf("addition de %ld/%ld / %ld/%ld = %ld/%ld\n\n",nr1.numerateur,nr1.denominateur,nr2.numerateur,nr2.denominateur,retour_fonction.numerateur,retour_fonction.denominateur);
                      
                                break;
                                }
                                default :
                                {
                                break;
                                }
                           }
                      
                           system("PAUSE");
                      
                           return 0;
                      }
                      


                      tu peux rajouter une fonction qui simplifie le numérateur et le dénominateur.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 novembre 2008 à 21:41:30

                        Merci quark22 maintenant je sais ma faute
                        maerci bcp
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Probleme Lors Compilation D'une 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