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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 51
    Points
    51
    Par défaut résolution de equation 2nd degré
    bonjour
    j'ai un programme compilé sans erreur et pourtant il plante qd je rentre les nombres 1,2 et -8.
    si je rentre que des nbres positif alors il marque delta = 0 bizarre qu'il calcule pas.
    je comprend pas pk il plante alors que j'ai pas de warning !


    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
     
    #include <stdio.h>
    #include <conio.h>
    #include <math.h> // pour la racine ==>  sqrt();
     
    void saisie (float *aa,float *bb,float *cc)
    {
    printf("ENTRER A:");
    scanf("%d",aa);
    printf("ENTRER B:");
    scanf("%d",bb);
    printf("ENTRER C:");
    scanf("%d",cc);
    }
     
    void calcul (float aa,float bb,float cc)
    {
    float delta;
    delta=((bb*bb)-(4*aa*cc));
    printf ("delta=%f\n",delta);
    if (delta<0)
    printf ("il n'y a pas de solution Reelle\n");
    if (delta==0)
    printf ("X=%f\n",(-bb)/(2*aa));
    printf ("X1=%f\nX2=%f\n",(((-bb)-(sqrt(delta)))/(2*aa)),(((-bb)+(sqrt(delta)))/(2*aa)));
    }
     
    void main(void)
    {
    float aa,bb,cc;
    saisie (&aa,&bb,&cc);
    calcul (aa,bb,cc);
    printf("POUR SORTIR FRAPPER UNE TOUCHE: ");
    getch();
    }
    je voudrai comprendre pk ça marche pas et comment corriger CE programme. Merci d'avance.
    ps : delta = (bb)^2 - 4*(aa)*(cc)
    et x = [(-bb)-racine de delta] / (2*aa)

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Points : 1 166
    Points
    1 166
    Par défaut
    Essaye d'afficher les valeurs de aa,bb et cc après leur entrée dans la fonction saisie().
    Si tu rentres des nombres négatifs, ca plante ? Essaye de déclarer des signed.

    Nas'

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: résolution de equation 2nd degré
    Citation Envoyé par isidore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void saisie (float *aa,float *bb,float *cc)
    {
       printf("ENTRER A:");
       scanf("%d",aa);
    }
    Ce code est incorrect. "%d" attend un int* et non un float*. Tu veux sans doute "%f".

    Ceci-dit il est préférable d'utiliser 'double' que 'float' pour les calculs mathématiques. Le format 'float' est utile uniquement pour stocker des données quand on manque de place.

    D'autre part, main() retourne int. Toujours.

    Essaye ça:

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
     
    #include <stdio.h>
    #include <math.h>               /* pour la racine ==>  sqrt(); */
    #include <string.h>
    #include <errno.h>
    #include <stdlib.h>
     
    /* saisie d'une ligne (chaine de caracteres) */
    int get_s (char *const s, size_t const size)
    {
       /* lecture d'une ligne */
       int err = fgets (s, size, stdin) == NULL;
     
       if (!err)
       {
          /* si il n'y a pas eu d'erreur de lecture
           * recherche du '\n'' final
           */
          char *p = strchr (s, '\n');
     
          if (p != NULL)
          {
             /* Si on l'a trouve, destruction */
             *p = 0;
          }
          else
          {
             /* sinon, c'est que la chaine de destination est trop courte.
              * lecture de tous les caracteres non lus (nettoyage de stdin)
              */
             int c;
     
             while ((c = getchar ()) != '\n' && c != EOF)
             {
             }
             err = 1;               /* ligne incomplete */
          }
       }
       return err;
    }
     
    /* saisie d'un flottant */
    int get_d (double *const p)
    {
       int err;
     
       if (p != NULL)
       {
          /* Si on a bien passe un pointeur non NULL */
          char s[64];
     
          /* lecture d'une ligne */
          err = get_s (s, sizeof s);
     
    /*
     * L'etat de la globale 'C' errno est incertain.
     * On le force a 0 (= pas d'erreur).
     * En effet au demarrage du programme, errno est initialisee a 0, 
     * mais aucune fonction standard ne positionne errno a 0, alors
     * que beaucoup d'entre elles, (y compris des fonctions
     * non-standard ou applicatives) peuvent le modifier a une autre valeur.
     */
          errno = 0;
     
          if (*s != 0)
          {
             /* Si la chaine saisie n'est pas vide ("") */
             /* ce pointeur sera mis a jour par strtod().
              * Il indiquera la position du premier caractere non converti
              */
             char *p_end;
     
             /* Conversion de la chaine en double */
             double x = strtod (s, &p_end);
     
             /* On verifie que tout c'est bien passe : 
              * - p_end pointe bien sur 0, c'est a dire la fin de la chaine
              * - errno n'indique pas d'erreur
              */
             if (*p_end == 0 && errno == 0)
             {
                /* on retourne la valeur a l'appelant */
                *p = x;
             }
             else
             {
                err = 1;            /* erreur de conversion */
             }
          }
          else
          {
             err = 1;               /* chaine vide */
          }
       }
       return err;
    }
     
    int saisie (double *const pa, double *const pb, double *const pc)
    {
       int err;
     
       printf ("ENTRER A:");
       err = get_d (pa);
     
       if (!err)
       {
          printf ("ENTRER B:");
          err = get_d (pb);
     
          if (!err)
          {
             printf ("ENTRER C:");
     
             if (!err)
             {
                err = get_d (pc);
             }
          }
       }
       return err;
    }
     
    void calcul (double const a, double const b, double const c)
    {
       double delta = ((b * b) - (4 * a * c));
     
     
       printf ("delta=%f\n", delta);
     
       if (delta < 0)
       {
          printf ("il n'y a pas de solution Reelle\n");
       }
       else if (delta == 0)
       {
          printf ("X=%f\n", (-b) / (2 * a));
       }
       else
       {
          printf ("X1=%f\n"
                  "X2=%f\n"
                  ,((-b) - (sqrt (delta))) / (2 * a)
                  ,((-b) + (sqrt (delta))) / (2 * a)
             );
       }
    }
     
    int main (void)
    {
       double a, b, c;
     
       int err = saisie (&a, &b, &c);
       if (!err)
       {
          calcul (a, b, c);
       }
       return 0;
    }
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Tu essayes de prendre une racine carrée d'un nombre négatif. Modifie comme suit par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (delta<0) {
    printf ("il n'y a pas de solution Reelle\n");
    } else if (delta==0) {
    printf ("X=%f\n",(-bb)/(2*aa)); 
    } else {
    printf ("X1=%f\nX2=%f\n",(((-bb)-(sqrt(delta)))/(2*aa)),(((-bb)+(sqrt(delta)))/(2*aa))); 
    }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 51
    Points
    51
    Par défaut
    MERCI A TOUS.
    j'ai trouvé mon erreur : j'ai omis les accolades ds les if et donc je prend les racines d'un nbre négatif => plantage.

    par contre à présent, je rentre a=1 b=2 c-8 et j'obtiens à l'écran :
    Delta = -NAN

    ça je comprend pas d'où ça sort et quel est le blem.

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

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    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
    37
    38
    39
    40
    41
    42
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    int main(int argc, char *argv[])
    {
    	if (argc < 4)
    		printf("Pas assez d'arguments : $ fichier <a> <b> <c>\n<a> representant la valeur de a, ... ");
    	else if (argc > 4)
    		printf("Trop d'arguments");
    	else 
    	{
    		double a = atof(argv[1]);
    		double b = atof(argv[2]);
    		double c = atof(argv[3]);
     
    		double delta;
     
    		delta = (double) b*b-4*a*c;
    		printf("Le discrimant vaut %f", delta);
     
    		if (delta < 0)
    			printf("Pas de solutions reelles");
    		else if (delta == 0)
    		{
    			double sol;
    			sol = -b/(2*a);
     
    			printf("Solution : %f", sol);
    		}
    		else 
    		{
    			double sol1, sol2;
    			sol1 = (-b-( sqrt(delta) ))/(2*a);
    			sol2 = (-b+ sqrt(delta) )/(2*a);
     
    			printf("Solutions : %f et %f", sol1, sol2);
    		}
     
    	}
    	return 0;
    }
    essayes ca...
    bien que chez moi.. ca me donne des erreurs, alors que math.h est présente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [willand@xerta maths]$ gcc -o eq eq.c
    /tmp/ccaOcMzo.o(.text+0x164): In function `main':
    : undefined reference to `sqrt'
    /tmp/ccaOcMzo.o(.text+0x184): In function `main':
    : undefined reference to `sqrt'
    collect2: ld returned 1 exit status

  7. #7
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Points : 146
    Points
    146
    Par défaut Re: résolution de equation 2nd degré
    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
       int err = fgets (s, size, stdin) == NULL;
    ...
    qu'est ce que ca veut dire ca ?
    tu combines opérateur d'affectation et de comparaison...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 51
    Points
    51
    Par défaut
    slt à tous

    pour emmanuel : MERCI pour ton prog mais tes fonction get_s et get_d sont incompréhensible pour moi j'ai pas compris à quoi elle servait, ce qu'elle faisais, pas compris les
    fgets (s, size, stdin) == NULL;
    char *p = strchr (s, '\n');
    while ((c = getchar ()) != '\n' && c != EOF)
    char s[64];
    err = get_s (s, sizeof s);
    double x = strtod (s, &p_end);
    (p_end != s && errno == 0)
    DESOLE mais je suis loin d'etre aussi avancé en la matière, toutes ces lignes n'ont encore pas de sens pour moi

    par contre merci pour le "Ce code est incorrect. "%d" attend un int* et non un float*. Tu veux sans doute "%f". Effectivement c t là mon erreur.

    Pour willand, merci pour le code mais il est super compliqué aussi
    pk ça parle de fichier dans ton code?
    c quoi les
    atof(argv[1]);
    printf("Pas assez d'arguments : $ fichier <a> <b> <c>\n<a> representant la valeur de a, ... ");
    voilà, à présent le programme marche parfaitement.
    Delta = -NAN <- vous savez ce que c le "-NAN"

    @+

  9. #9
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    A propos du code d'Emmanuel :
    il utilise fgets pour lire une chaine de caractères sur l'entrée standard.. parce que scanf est une fonction non sure..
    c'est a dire que toi tu peux demander a ce que l'utilisateur saisisse un entier :
    mais si l'utilisateur ne le fait pas, ton programme boguera..
    fgets est la pour ne pas avoir ce desagrement..

    mon code :
    fichier : nom du programme compilé, executable
    pour ce qui est de argv[1] ca represente le deuxieme argument en entrée de la fonction main...
    et on convertit cette chaine de caracteres en double avec la fonction atof (ou alors il y a les strtod, ... mais je sais pas encore utiliser...)

  10. #10
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    une petite explication avant d'aller se coucher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # je lance mon programme en saisissant comme parametres les valeurs de a, b, et c
    monprog 3 6 2
    # donc argv[0] vaudra "monprog"
    # argv[1] vaudra 3
    # argv[2] vaudra 6
    # argv[3] vaudra 2
    # argv[4] vaudra NULL parce que t'as rien après
     
    # et si tu regardes la fonction main j'ai mis :
    # int main(int argc, char *argv[])
    # argv => arg vectors : ce que tu saisis en entree..
    # et argc compte le nombre d'arguments de argv
    # donc dans mon cas, argc vaudra 4 (de 0 a 3)

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 51
    Points
    51
    Par défaut
    j'arrive pas à comprendre coment vous pouvez faire des trucs complexes ou tordus comme conversion de chaines de caractères, qd je regarde mon code, il est bateau ! pk faire si compliqué? enfin chais pas mais ça vous fait pas bizarre? j'avoue j'hallucine qd je vois vos code, celui d'emmanuel est largement zarbi et maintenant j'ai compris celui de willand et moi j'arrive à me démerder avec des printf, scanf ...comprend pas pk vous avez des trucs aussi "dur" enfin pas pour vous mais pour moi.

    alez bonne soirée ou bonne matinée

  12. #12
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    seulement.. c'est pas parce qu'un prog marche qu'il est forcement bien programmé..

    il y a pas mal de choses a voir..
    déja la portabilité..
    après faut que ca soit clair
    que le code soit "sur", si le programme peut planter a n'importe quelle occasion, ca n'a pas d'interet
    ...

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 51
    Points
    51
    Par défaut
    mon prog est clair. portable ouais à un,2 truc près.
    sûr je sais pas, je connais les "danger" d'un printf ou d'un scanf lol
    c innofensif au 1er abord après je sais pas.
    (y a un lien vers un document qui dit "utiliser fprintf au lieu de printf, fscanf au lieu de scanf ou qqch comme ça? pour que je puisse me documenter...)

  14. #14
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    fprintf ca peut etre interessant au niveau de la lisibilté du code
    Si une erreur se produit, tu l'affiches en mettant
    fprintf(stderr, "....");

    stderr fait partie des flux standards, qui sont aux nombre de 3

    stdin : entree standard, donc le clavier
    stdout : sortie standard
    stderr : sortie d'erreur

    pour fscanf je vois pas trop l'interet, parce qu'en general tu lis toujours a partir de stdin...
    Mais comme diraient certains... pourquoi ne pas utiliser fgets a la place de scanf ?

  15. #15
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    Citation Envoyé par isidore
    portable ouais à un,2 truc près.
    quand tu dis portable, il doit l'être a 100%, ce qui n'est pas le cas...

    je te dis déja rien qu'en le regardant que mon compilateur me donnera pleins de warnings et ne voudra pas compiler ce code

    Déja a cause du void main(void)
    La norme ANSI définit que main renvoie un entier (0 ou EXIT_SUCCESS si le programme s'est bien terminé)

    conio.h n'est pas reconnu sous Linux... tu aurais du utiliser getchar au lieu de getch, qui se trouve dans stdio.h

    sur ce, bonne journée

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par isidore
    je rentre a=1 b=2 c-8 et j'obtiens à l'écran :
    Delta = -NAN

    ça je comprend pas d'où ça sort et quel est le blem.
    Je n'ai pas ce problème avec mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    D:\DEVELOPP\I\ISIDORE>bc proj.prj
    ENTRER A:1
    ENTRER B:2
    ENTRER C:-8
    delta=36.000000
    X1=-4.000000
    X2=2.000000
    Pas de Wi-Fi à la maison : CPL

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Willand
    bien que chez moi.. ca me donne des erreurs, alors que math.h est présente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [willand@xerta maths]$ gcc -o eq eq.c
    /tmp/ccaOcMzo.o(.text+0x164): In function `main':
    : undefined reference to `sqrt'
    /tmp/ccaOcMzo.o(.text+0x184): In function `main':
    : undefined reference to `sqrt'
    collect2: ld returned 1 exit status
    <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...
    </>
    Pas de Wi-Fi à la maison : CPL

  18. #18
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    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..

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: résolution de equation 2nd degré
    Citation Envoyé par Willand
    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
       int err = fgets (s, size, stdin) == NULL;
    ...
    qu'est ce que ca veut dire ca ?
    tu combines opérateur d'affectation et de comparaison...
    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.
    Pas de Wi-Fi à la maison : CPL

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par isidore
    pour emmanuel : MERCI pour ton prog mais tes fonction get_s et get_d sont incompréhensible pour moi. j'ai pas compris à quoi elle servait, ce qu'elle faisais,
    J'ai modifié mon post. J'ai ajouté des commentaires (et corrigé un petit bug)

    Dans l'industrie on a tendance à être un peu paranoïaque concernant la sécurité. Tu verras avec l'expérience que plus de 50% du code produit concerne la sécurité et le traitement d'erreur.
    Pas de Wi-Fi à la maison : CPL

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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