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 :

résolution de equation 2nd degré


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Par défaut Re: résolution de equation 2nd degré
    Citation Envoyé par Emmanuel Delahaye
    Pas tout à fait. En fait, je stocke le résultat de l'évaluation de l'expression 'a == b' dans une variable.

    Rappel, le résultat de l'évaluation d'une expression est de type int et vaut 0 ou 1. C'est garanti par le langage, et par là même, ça rend inutile la notion de 'type booléen' en C.
    euh.. et c'est quoi l'interet ?
    autrement c'est pas plus clair de mettre des parenthèses ? si on ne connaît pas la priorité des opérateurs...

  2. #2
    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 isidore
    j'arrive pas à comprendre coment vous pouvez faire des trucs complexes ou tordus comme conversion de chaines de caractères,
    Parce que la saisie 'sûre' d'une chaine de caractère en C n'est pas si simple. L'apparente simplicité des fonctions *scanf() masque en fait de sérieux problèmes de sécurité et de stabilité. Il existe très peu de personnes (et je n'en suis pas) dans le monde qui maitrisent les fonctions *scanf().

    Dans ton cas :

    • Il y avait une erreur de format ("%d" au lieu de "%f")
    • Une fois corrigé, il n'y a pas de test du code retour (nombre de conversions réussies)
    • Le caractère final '\n' n'est pas lu (Il manque probablement un bazar ésotérique genre "^[\n]" dans la chaine de format du scanf())
    • Si on tape une valeur autre que numérique, c'est la panique...

    Tous ces aspects sont en principe pris en compte dans mon code.

  3. #3
    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 Willand
    Citation Envoyé par Emmanuel Delahaye
    <gcc>
    Il doit manquer un -lm sur la ligne de commande... Je rappelle que le fait d'inclure <math.h> qui n'est qu'un fichier d'interface, ne va pas ajouter la bibliothèque 'math' comme par magie...
    </>
    d'habitude, je met juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o nom_exec nom_fichier.c
    et ca me le compile sans problème... (avec d'autres bibliothèques)

    par contre la avec math.h... problème..
    <gcc>
    Parce que par défaut, gcc ajoute la bibliothèque standard. Mais la bibliothèque math (qui est un gros morceau) n'est ajoutée que si nécessaire et sur demande expresse du programmeur. On peut le regretter, mais c'est comme ça.
    </>

  4. #4
    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 Re: résolution de equation 2nd degré
    Citation Envoyé par Willand
    Citation Envoyé par Emmanuel Delahaye
    Pas tout à fait. En fait, je stocke le résultat de l'évaluation de l'expression 'a == b' dans une variable.

    Rappel, le résultat de l'évaluation d'une expression est de type int et vaut 0 ou 1. C'est garanti par le langage, et par là même, ça rend inutile la notion de 'type booléen' en C.
    euh.. et c'est quoi l'interet ?
    De respecter un principe fort chez moi qui veut que quand c'est possible, une variable soit définie et initialisée en même temps.
    autrement c'est pas plus clair de mettre des parenthèses ? si on ne connaît pas la priorité des opérateurs...
    Comment imaginer qu'un programmeur C ne connaisse pas la priorité des opérateur . Je reconnais qu'en cas de doute, il est préférable de mettre les parenthèses...

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    <gcc>
    Parce que par défaut, gcc ajoute la bibliothèque standard. Mais la bibliotèque math (qui est un gros morceau) n'est ajoutée que si nécessaire et sur demande expresse du programmeur. On peut le regretter, mais c'est comme ça.
    </>
    je trouve ca bizarre, parce que pour des bibliothèques comme unistd.h (non standard) et bien j'ai pas besoin de mettre des options spécifiques pour gcc..

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Par défaut Re: résolution de equation 2nd degré
    Citation Envoyé par Emmanuel Delahaye
    De respecter un principe fort chez moi qui veut que quand c'est possible, une variable soit définie et initialisée en même temps.
    oki..

    et donc si je me trompe pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i; // definition
    i = 10; // initialisation
    int i = 10; // definition et initialisation

  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 Re: résolution de equation 2nd degré
    Citation Envoyé par Willand
    et donc si je me trompe pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i; // definition
    i = 10; // initialisation
    int i = 10; // definition et initialisation
    Oui, et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern int i; /* declaration */

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Par défaut Re: résolution de equation 2nd degré
    Citation Envoyé par Emmanuel Delahaye
    Oui, et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern int i; /* declaration */
    ah oui.. donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int fct(int valeur); // declaration
     
    int main()
    {
    ...
    return EXIT_SUCCESS;
    }
     
    int fct(int valeur)
    {
    ...
    return untruc;
    }

  9. #9
    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 Willand
    Citation Envoyé par Emmanuel Delahaye
    <gcc>
    Parce que par défaut, gcc ajoute la bibliothèque standard. Mais la bibliotèque math (qui est un gros morceau) n'est ajoutée que si nécessaire et sur demande expresse du programmeur. On peut le regretter, mais c'est comme ça.
    </>
    je trouve ca bizarre, parce que pour des bibliothèques comme unistd.h (non standard) et bien j'ai pas besoin de mettre des options spécifiques pour gcc..
    Bizarre ou pas, peu importe. Chaque implémenteur est libre de faire ce qu'il veut. J'ai en 12 ans travaillé avec une dizaine d'implémentation du C pour PC x86 (DOS, Win16, Win32), 68000, PowerPC, DSP Motorola, DSP Texas, c'est l'anarchie la plus complète... C'est pas grave. Il faut juste savoir que la seule chose intangible est la norme.

  10. #10
    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 Re: résolution de equation 2nd degré
    Citation Envoyé par Willand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int fct(int valeur); // declaration
     
    int main()
    {
       ...
       return EXIT_SUCCESS;
    }
     
    int fct(int valeur)
    {
       ...
       return untruc;
    }
    Oui, et dans ce cas, on peut remplacer 'déclaration' par 'prototype'. C'est plus précis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int fct (); /* declaration */
    int fct (int valeur); /* prototype */
    (Je rappelle que les commentaires à-la-C++ (//) ne sont pas standards en C90)

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Par défaut
    merci beaucoup pour tes explications Emmanuel

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. résolution d'equation de 3 ème degré
    Par nadim22 dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/07/2011, 19h50
  2. aide.graphe d'equation 2 degré en matlab
    Par waliddz dans le forum MATLAB
    Réponses: 9
    Dernier message: 29/10/2008, 14h38
  3. [VBA-E] Définition et résolution d'équation 3ième degré
    Par lucky-luc dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/04/2007, 16h01
  4. Racines réelles equation 4eme degré en vb6
    Par lebienestrare dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 10/11/2006, 10h43
  5. résolution d'equation f(x) = 0
    Par magicien dans le forum C
    Réponses: 8
    Dernier message: 06/05/2003, 16h06

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