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 :

Question concernant le message: 1. # inf00 lorsque division sur 0 en utilisant c ++


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Question concernant le message: 1. # inf00 lorsque division sur 0 en utilisant c ++
    Ce message (1. # inf00) est affiché parce que j'écris un programme sur la division sur 0, mais nous ne pouvons pas diviser par zéro, alors je demandais si je pouvais changer ce message pour mon propre message. Je veux dire message par défaut, comme on le sait : Ne pas diviser par zéro en assemblant en c ++.Nom : Sans titre.png
Affichages : 667
Taille : 58,4 Ko

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Bon il faut mettre 2-3 truc au clair :
    1)Ce n'est pas du C++ (ce que tu fait est du pur C).
    2)Je suis étonné que certain utilise encore en 2017 l'antique Dev C++ (y'a largement mieux de nos jours)
    3) il manque un return dans le main.
    4) la prochaine fois utilise la balise [code]

    Pour ton souci vu que j'ai la flemme de te dire de chercher sur la lib standard (et que tu trouvera sûrement pas trop) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( isfinite(c) == 0)
    	printf("Mon Message d'erreur\n");
    else
    	printf("%f\n",c);
    Sinon la prochaine fois tu pourra regardé ici : http://www.cplusplus.com/reference/
    La lib standard offre pas mal de chose de base.

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Sous Linux, avec gcc, le résultat retourné est
    inf.
    ça me parait bizarre, pour moi ça devrait être NaN.

    Une division par 0 ne donne pas l'infini, sinon moi je vous dis que 1=2, 1=3 etc... car dans ce cas 1/0=infini, comme 2/0=infini etc...

    Mais comme le résulat est cohérent avec celui de Anis hartani, je présume que la norme C dit qu'en cas de division par 0, c'est inf qui est retourné.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    la division par 0 c'est un interruption déroutement alors dans c++ lorsque lutilisataur divisé par 0 déroutement returne cett message 1. # inf00 alors ce message est par défaut mon enseignant dit : il y a une fonction assemblant en c ++ qui change cette message

  5. #5
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Sous Linux, avec gcc, le résultat retourné est


    ça me parait bizarre, pour moi ça devrait être NaN.

    Une division par 0 ne donne pas l'infini, sinon moi je vous dis que 1=2, 1=3 etc... car dans ce cas 1/0=infini, comme 2/0=infini etc...

    Mais comme le résulat est cohérent avec celui de Anis hartani, je présume que la norme C dit qu'en cas de division par 0, c'est inf qui est retourné.
    Bonjour,
    Les NaNs sont réservés pour les opérations indéfinies comme 0/0 0*∞ ∞-∞ 0⁰ etc … enfin il me semble.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En termes de math stricts, une division par zéro est indéfinie, mais une division par 0+ ou 0- ne l'est pas. Et vu que le standard IEEE 754 utilise des zéros signés...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Une division par 0 ne donne pas l'infini
    Bonjour

    La limite de f(x)=1/x quand x tend vers 0 par valeurs positives est "+infini". Et la limite qand x tend vers 0 par valeurs négatives est "-infini".

    Citation Envoyé par chrtophe Voir le message
    sinon moi je vous dis que 1=2, 1=3 etc... car dans ce cas 1/0=infini, comme 2/0=infini etc...
    Tu es en train de dire "si on définit f(x)=1/x et g(x)=2/x alors puisque la limite de ces deux fonctions quand x tend vers 0 est "+infini" ça signifie que f(x)-g(x)=0 donc f(x)=g(x) donc 1=2". Or le raisonnement que j'ai écrit en rouge est justement ce qu'il est interdit de dire dans ce cas là car ce n'est justement pas une implication. Au contraire, quand la limite de deux fonctions est "+infini" on ne peut alors absolument rien dire sur f(x) - g(x).

    On peut parfois "admettre" dans certains cas qu'une des deux expressions aura tellement plus de "force" que l'autre qu'on considèrera alors l'autre comme négligeable (comme dans par exemple f(x)=x²-x quand x tend vers +infini où "x²" étant tellement plus "massif" que "x", ce dernier peut être omis ce qui donne alors "+infini"). Ou alors on peut aussi parfois arriver à re-écrire l'expression pour faire sauter l'indétermination (comme dans l'exemple précédent qui se réécrit f(x)=x(x-1) ou comme par exemple la limite de f(x)=sin(x) * cos(x) * 180/x quand x tend vers 0 qui reste indéterminéee jusqu'à ce qu'on la réécrive f(x)=sin(x)/x * cos(x) * 180 ce qui donne alors pi) et c'est justement ce qui se passe ici. Si f(x)=1/x et g(x)=2/x alors f(x)-g(x)=(1/x)-(2/x) = (x-2x)/x² = -x/x²=-1/x ce qui donne alors sa limite en "-infini" quand x tend vers 0 par valeurs supérieures. Et si cette limite est "-infini" ça ne veut plus dire que 1/x=2/x donc tu n'as alors absolument aucun argument pour dire que 1 est égal à 2...
    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]

  8. #8
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 471
    Points : 6 110
    Points
    6 110
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    je présume que la norme C dit qu'en cas de division par 0, c'est inf qui est retourné.
    Citation Envoyé par picodev Voir le message
    Les NaNs sont réservés pour les opérations indéfinies comme 0/0 0*∞ ∞-∞ 0⁰ etc … enfin il me semble.
    Vrai en C et en C++ :
    http://en.cppreference.com/w/c/langu...tor_arithmetic
    http://en.cppreference.com/w/cpp/lan...tor_arithmetic

    Quoique, dans le cas de pow(0.0, 0.0), la valeur retournée dépend de l'implémentation.

  9. #9
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Voici l'explication :
    On obtient NaN pour certaines opérations qui sont des indéterminées mathématiques : 0/0, ∞-∞, ∞/∞, 0*∞, et dans certaines bibliothèques 1∞. À noter que toutes les formes indéterminées ne donnent pas NaN : 1/0 n'a pas de sens en mathématiques pures, mais en IEEE 754 par convention cela donne +∞.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. Afficher un message d'erreur lorsque nul
    Par majudis dans le forum VBA Access
    Réponses: 8
    Dernier message: 08/12/2009, 08h58
  2. [Débutant] demande d'aide concernant un message d'erreur
    Par herick yao dans le forum MATLAB
    Réponses: 1
    Dernier message: 24/08/2009, 14h35
  3. Réponses: 10
    Dernier message: 20/01/2008, 20h57
  4. message d'erreur lorsque j'essaie de changer la valeur d'un champ.
    Par cladsam dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2006, 14h00

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