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 qui calcule x/y,on prend le cas de y=0


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2007
    Messages : 212
    Par défaut programme qui calcule x/y,on prend le cas de y=0
    Salut à tous.
    Ce programme dois calculer la valeur de x/y,on prend le cas de y=0;et y
    different de 0.
    Le probleme qui se pose est que le compilateur detecte un erreur dans la ligne
    if(y==0);
    et je n'arrive pas à resolu.

    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
    #include <stdio.h>
    #include <stdlib.h>
    /*VARIABLES GLOBALES*/
    float X,Y;
    /********************/
    /*fonctions divisions 2 param en entrée*/
    /*return 1 param float*/
    float division(float a,float b)
    {
          float c;
          c=a/b;
          return(c);
          }
          /*fonction affichage 1 param d'entrée*/
          /****aucun param de sortie *****/
          void affichage(float d)
          {
               printf("la division de %f+%f=%f\n",X,Y,d);
          }
    int main(int argc, char *argv[])
    {
      /*variables locale au main initialisée*/
      float Z=0.0;
      /*var globales X,Y modifiées dans la fonction main*/
      if (y==0);
        z=infini;
      else
      z=division(X,Y);
    scanf("%f",&X);
    scanf("%f",&Y);
      affichage(Z);
      system("PAUSE");	
      return 0;
    }
    Quelqu'un peut m'aider à le faire.
    merci à tous.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    • Pas de point-virgule après un "if"
    • Z=infini => étonnante syntaxe
    • tu peux te passer de "c" dans la fonction "division". Tu peux même te passer d'une aussi grosse fonction qui fait une aussi petite opération
    • je ne pige pas pourquoi tu fais saisir X et Y après avoir calculé Z alors que Z dépend de X et Y
    • la variable "Z" n'est pas "z"
    • les globales ne servent à rien. D'ailleurs les globales c'est "mal"
    • penses à mettre ton code entre balises "code" la prochaine fois

    Voilà. Je pense avoir fait le tour.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre éclairé
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2007
    Messages : 212
    Par défaut
    Salut

    j'ai modifier le programme ,mais le problème se pose toujours,avec quoi puis-je remplace l'infini dans la langage C.
    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
    #include <stdio.h>
    #include <stdlib.h>
    /*VARIABLES GLOBALES*/
    float x,y;
    /********************/
    /*fonctions divisions 2 param en entrée*/
    /*return 1 param float*/
    float division(float a,float b)
    {
          float c;
          c=a/b;
          return(c);
          }
          /*fonction affichage 1 param d'entrée*/
          /****aucun param de sortie *****/
          void affichage(float d)
          {
               printf("la division de %f+%f=%f\n",x,y,d);
          }
    int main(int argc, char *argv[])
    {
      /*variables locale au main initialisée*/
      float z=0.0;
      /*var globales X,Y modifiées dans la fonction main*/
      scanf("%f",&x);
    scanf("%f",&y);
      if (y==0)
        z=infini;
      else
      z=division(x,y);
      affichage(z);
      system("PAUSE");	
      return 0;
    }
    Merci énormément.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par autoin Voir le message
    Salut

    j'ai modifier le programme ,mais le problème se pose toujours,avec quoi puis-je remplace l'infini dans la langage C.
    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
    #include <stdio.h>
    #include <stdlib.h>
    /*VARIABLES GLOBALES*/
    float x,y;
    /********************/
    /*fonctions divisions 2 param en entrée*/
    /*return 1 param float*/
    float division(float a,float b)
    {
          float c;
          c=a/b;
          return(c);
          }
          /*fonction affichage 1 param d'entrée*/
          /****aucun param de sortie *****/
          void affichage(float d)
          {
               printf("la division de %f+%f=%f\n",x,y,d);
          }
    int main(int argc, char *argv[])
    {
      /*variables locale au main initialisée*/
      float z=0.0;
      /*var globales X,Y modifiées dans la fonction main*/
      scanf("%f",&x);
    scanf("%f",&y);
      if (y==0)
        z=infini;
      else
      z=division(x,y);
      affichage(z);
      system("PAUSE");	
      return 0;
    }
    Merci énormément.
    Il n'y a pas d'équivalent de l'infini en C. D'ailleurs le terme "infini" ne désigne pas un nombre en lui-même (c'est pour ça qu'on ne peut pas connaître le résultat de "infini moins infini" quand on étudie les limites).
    En fait, le vrai terme mathématique est "indéfini" et non "infini" car la division d'un dividende par 0 donne un nombre qu'on ne peut définir (cf. Les nombres infinitésimaux de Cantor).

    Donc si y vaut 0 ben faut que tu te fasse ton affichage perso à ta sauce à base de "printf" et sinon tu calcules x/y.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éclairé
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Septembre 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2007
    Messages : 212
    Par défaut
    Salut.
    Meci beaucoup M Sve@r,maintenant le programme se compile et s'execute facilement.
    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
    #include <stdio.h>
    #include <stdlib.h>
    /*VARIABLES GLOBALES*/
    float x,y;
    /********************/
    /*fonctions divisions 2 param en entrée*/
    /*return 1 param float*/
    float division(float a,float b)
    {
          float c;
          c=a/b;
          return(c);
          }
          /*fonction affichage 1 param d'entrée*/
          /****aucun param de sortie *****/
          void affichage(float d)
          {
               printf("la division de %f+%f=%f\n",x,y,d);
          }
    int main(int argc, char *argv[])
    {
      /*variables locale au main initialisée*/
      float z=0.0;
      /*var globales X,Y modifiées dans la fonction main*/
      scanf("%f",&x);
    scanf("%f",&y);
      if (y==0)
        printf("indéfine");
      else
      z=division(x,y);
      affichage(z);
      system("PAUSE");	
      return 0;
    }
    .
    Cordialement.

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Il est possible de calculer une valeur infinie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double a = 1 / 0.;
    printf("%lf\n", a);
    En C99 il y a une constante valant l'infini : INFINITY :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double a = 1 / 0.;
    printf("%lf\n", INFINITY);
    Le standard précise :
    The macro
    INFINITY
    expands to a constant expression of type float representing positive or unsigned
    infinity, if available; else to a positive constant of type float that overflows at
    translation time.
    (7.12.4)
    tout en précisant que dans le cas d'un overflow la contrainte :
    The value of a constant shall be in the range of representable values for its type.
    (6.4.4)
    n'est plus respectée .
    Le standard précise également le format d'affichage de printf pour les nombres infinis :
    A double argument representing an infinity is converted in one of the styles
    [-]inf or [-]infinity — which style is implementation-defined.
    (7.19.6.1.8)

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par autoin Voir le message
    maintenant le programme se compile et s'execute facilement.
    Je conseille plusieurs choses ;
    • Améliorer la présentation
    • Ne pas utiliser de globales
    • Réserver float au stockage. Faire les saisies et les calculs en double.
    • Eviter les commentaires inutiles
    • Aider l'utilisateur pour faire ses saisies

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    double division (double a, double b)
    {
       return c = a / b;
    }
     
    void affichage (double a, double b, double d)
    {
       printf ("la division de %f+%f=%f\n", a, b, d);
    }
     
    int main (void)
    {
       double x;
       double y;
       double z;
     
       printf ("Entrer x ");
       scanf ("%lf", &x);
     
       printf ("Entrer y ");
       scanf ("%lf", &y);
       if (y == 0)
       {
          printf ("ERR : Division par 0. Resultat non defini");
       }
       else
       {
          z = division (x, y);
          affichage (x, y, z);
       }
       return 0;
    }
    Pose des questions si tu ne comprends pas.

    D'autre part, attention, l'usage correct de scanf() est complexe (ici, la moindre erreur de saisie et c'est le drame).

    Je recommande l'usage de fgets() suivi de fclean() (voir sur le forum, c'est une fonction 'communautaire'), suivi de strtod().

Discussions similaires

  1. un programme qui calcule le nombre des mots
    Par komat dans le forum Débuter
    Réponses: 3
    Dernier message: 06/12/2010, 22h46
  2. erreur d'un programme qui calcule la remise
    Par maydarak1 dans le forum C
    Réponses: 3
    Dernier message: 27/01/2010, 18h06
  3. Proramme qui calcul l'espace que prend un fichier sur le HDD
    Par snoopy69 dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 26/01/2007, 17h05
  4. 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