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 :

Je n'arrive pas à exécuter mon programme


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Je n'arrive pas à exécuter mon programme
    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<math.h>
    main() {
    float x1,x2,a,b,c,d;
    printf("a=");
    scanf("%f" , &a);
    printf("b=");
    scanf("%f" , %b);
    printf("c=");
    scanf("%f" , &c);
    d=(b*b-4*a*c);
    if (a==0)
    	if(b!=0){
    		x1=-c/b;
    		printf(one root solution);
    		}
    	else
    		printf(no solution);
    else if (a!=0){
     
         if (d>0){
         x1=(-b-sqrt(d)/2*a);
         x2=(-b+sqrt(d)/2*a);
         printf("root is%f\n", x1);
         printf("root is%f\n", x2);
         }
         else if (d==0)
         x1=-b/2*a;
         x2=x1;
         printf("only one root%f\n", x1);
     
         else (d<0){
         printf("no roots%f\n");
     
         }
    aider moi a corriger mes fautes SVP
    merci

    L'exercice est:
    écrivez un programme qui trouve les solutions de l'équation ax²+bx+c=0
    considerer tous les cas possibles, utiliser les instruction if...else if...else if...else

  2. #2
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    peux tu utiliser code /code

    Je pense que tu devrais utiliser les accolades systématiquement pour délimiter tes blocs, même pour une seule ligne, comme cela si ton code évolue le découpage des blocs sera toujours clair.

    pour les chaines de caractères il faut des guillemets, certains printf ne sont pas corrects.

    n'hésite pas à ajouter des commentaires dans ton code pour expliquer ce que tu fais.
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    - Beaucoup de fautes d'inattention qui ont dues être signalées, pour la plupart, par le compilateur.
    - Améliorer la présentation, le code est difficilement lisible.
    - Commentaires dans le code (se référer également au code d'origine pour les interpréter).
    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
     
    #include<stdio.h>
    #include<math.h>
    int main() { // On doit spécifier explicitement que main retourne int
       float x1,x2,a,b,c,d;
       printf("a=");
       scanf("%f" , &a);
       printf("b=");
       scanf("%f" , &b); // % n'est pas &
       printf("c=");
       scanf("%f" , &c);
       d = b*b-4*a*c; // pourquoi des parenthèses ? pour alourdir la lecture ?
       if(a==0)
          if(b!=0){
             x1=-c/b;
             printf("one root solution %f",x1); // chaine de caractères
             // mais l'utilisateur n'avait pas le droit de connaitre la solution ?
          }
          else printf("no solution"); // chaine de caractères
               // message faux : si en plus c==0, il y a une infinité de solution
       else // bien sûr qu'ici a!=0 !!!
          if (d>0){
             x1=(-b-sqrt(d))/(2*a); // erreurs de parenthèses
             x2=(-b+sqrt(d))/(2*a); // erreurs de parenthèses
             printf("root is%f\n", x1);
             printf("root is%f\n", x2);
          }
          else
             if (d==0){// manquait le bloc {}
                x1=-b/2*a;
                //x2=x1;  x2 n'est plus utilisé !!!
                printf("only one root%f\n", x1);
             }
             else  // (d<0){  : ce code ne signifie rien
                printf("no roots\n"); // pourquoi un %f ?
       return 0; // main renvoie int
    }
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 12
    Points
    12
    Par défaut y'en a encore des erreurs :((
    Citation Envoyé par diogene Voir le message
    - Beaucoup de fautes d'inattention qui ont dues être signalées, pour la plupart, par le compilateur.
    - Améliorer la présentation, le code est difficilement lisible.
    - Commentaires dans le code (se référer également au code d'origine pour les interpréter).
    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
     
    #include<stdio.h>
    #include<math.h>
    int main() { // On doit spécifier explicitement que main retourne int
       float x1,x2,a,b,c,d;
       printf("a=");
       scanf("%f" , &a);
       printf("b=");
       scanf("%f" , &b); // % n'est pas &
       printf("c=");
       scanf("%f" , &c);
       d = b*b-4*a*c; // pourquoi des parenthèses ? pour alourdir la lecture ?
       if(a==0)
          if(b!=0){
             x1=-c/b;
             printf("one root solution %f",x1); // chaine de caractères
             // mais l'utilisateur n'avait pas le droit de connaitre la solution ?
          }
          else printf("no solution"); // chaine de caractères
               // message faux : si en plus c==0, il y a une infinité de solution
       else // bien sûr qu'ici a!=0 !!!
          if (d>0){
             x1=(-b-sqrt(d))/(2*a); // erreurs de parenthèses
             x2=(-b+sqrt(d))/(2*a); // erreurs de parenthèses
             printf("root is%f\n", x1);
             printf("root is%f\n", x2);
          }
          else
             if (d==0){// manquait le bloc {}
                x1=-b/2*a;
                //x2=x1;  x2 n'est plus utilisé !!!
                printf("only one root%f\n", x1);
             }
             else  // (d<0){  : ce code ne signifie rien
                printf("no roots\n"); // pourquoi un %f ?
       return 0; // main renvoie int
    }

    ya un message d'erreur qui s'affiche lors de l'execution:
    Images attachées Images attachées  

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Tu as sans doute oublié de lier avec la bibliothèque mathématique
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 16
    Points : 12
    Points
    12
    Par défaut quel commande correcte
    [QUOTE=diogene;5027427]Tu as sans doute oublié de lier avec la bibliothèque mathématique[/Q
    c'est quoi la commande correcte pour exeécuter ce programme

    la commande pour voir les résultat sur l'écran!!!
    "gcc sabri1second.c -o sabri1second -lm"
    aprés je ne sais pas comment faire : (

  7. #7
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Ajoute -lm dans la ligne de commande qui te sert a linker

    Sinon c'est écrit dans la page de man.
    http://www.linux-france.org/article/...n3/sqrt-3.html

    SQRT(3) Manuel du programmeur Linux SQRT(3)


    NOM
    sqrt - Fonction racine carrée (square root).

    SYNOPSIS
    #include <math.h>

    double sqrt (double x);

    DESCRIPTION
    La fonction sqrt() renvoie la racine carrée non-négative
    de x. Elle échoue et positionne errno a EDOM, si x est
    négatif.

    ERREURS
    EDOM x est négatif.

    NOTES

    Pour utiliser les fonctions de la bibliothèque
    mathématique, il ne faut pas oublier d'ajouter l'argument
    -lm sur la ligne de commande de cc(1) ou ld(1), lors de
    l'édition des liens.


    CONFORME A
    SVID 3, POSIX, BSD 4.3, ISO 9899

    VOIR AUSSI

    hypot(3)


    TRADUCTION
    Christophe Blaess, 1997.
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

Discussions similaires

  1. Je n'arrive pas à exécuter un programme java
    Par totoAussi dans le forum Général Java
    Réponses: 7
    Dernier message: 29/04/2010, 17h41
  2. je n'arrive pas à executer mon programme
    Par alladum dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/01/2010, 13h02
  3. Réponses: 2
    Dernier message: 02/12/2006, 20h13
  4. Réponses: 9
    Dernier message: 11/04/2006, 23h14
  5. [Compilation] Dev ne peut pas compiler mon programme
    Par Rémaill dans le forum Dev-C++
    Réponses: 9
    Dernier message: 01/11/2005, 00h41

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