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 :

equation du second degre


Sujet :

C

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut equation du second degre
    Bonjour à tous,

    J'ai un exercice où je suis bloqué, dans lequel on me demande de résoudre une équation du second degré, avec les conditions suivantes:
    si a est nul, on résout bx +c = 0, si a est "normal", on cherche delta.
    Voila ce que j'ai fait :
    //equationSecondDegre.c
    #include<stdio.h>
    #include<math.h>
    int main () {
    float a, b, c, x, delta, x1, x2, x0;
    printf("a ? ");
    scanf("%f", &a);
    printf("b ? ");
    scanf("%f", &b);
    printf("c ? ");
    scanf("%f", &c);
    delta = b * b - 4 * a * c;
    if (a == 0) {
    x = -b/a;
    printf("a est nul, la solution est %f.\n", a, x);
    if (a != 0, delta > 0) {
    x1 = (-b + sqrt(delta)) / (2 * a);
    x2 = (-b - sqrt(delta)) / (2 * a);
    printf("Les solutions sont %f et %f.\n", x1, x2);}
    if (a != 0, delta == 0) {
    x0 = -b/(2 * a);
    printf("La solution est %f.\n", x0);}
    if (a != 0, delta < 0)
    printf("Il n'y a pas de solution.\n", x);
    return (0);
    }

    Le terminal me dit ceci :
    eSD.c: In function ‘main’:
    eSD.c:26:1: erreur: expected declaration or statement at end of input

    Je vois pas vraiment où se trouve mon erreur. J'ai juste un doute sur "a != 0". Bref quelqu'un pourrait m'aider svp ? Merci d'avance

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Bonjour,

    Merci d'ajouter les balises [code] et [/code] autour de ton programme car, en l'état, c'est illisible.

    Dans le cas de
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (a == 0) {
    x = -b/a;
    printf("a est nul, la solution est %f.\n", a, x);
    … tu as oublié l'accolade fermante. Il faudrait également mettre des « else » entre chaque bloc « if » pour les enchaîner.

    Enfin, dans les lignes telles que
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
        if (a != 0, delta == 0)
    … l'opérateur « , » ne fait pas ce que tu crois. Ici, c'est surtout le pseudo-ET « && » qui t'intéresse.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Mais tu es sûr qu'il y a besoin du else. Parce que j'ai vu dans certaines circonstances, on utilise le "if" sans le "else", donc je me suis dit que cela peut marcher ici.

    Pour ce qui est du [code C] et [/code C], je suis un peu beaucoup un novice, donc je ne sais pas trop comment ça marche l'utilisation des codes dont tu parles.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    le "else" n'est pas obligatoire pour chaque "if", ça dépend de ce que tu veux faire faire à ton algorithme..
    Pour les balises tu as un bouton # au-dessus du formulaire de réponse du forum qui les insère et tu n'as plus qu'à mettre ton code au milieu.

    Par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (a == 0) {
    x = -b/a;
    si a vaut 0, tu divises b par a
    Ne vois-tu pas une erreur ?

    Pour calculer les solutions, l'algorithme général est
    - si a vaut 0
    - sinon
    -- si delta == 0
    -- sinon si delta > 0
    -- sinon
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Citation Envoyé par Manudeparis Voir le message
    Mais tu es sûr qu'il y a besoin du else. Parce que j'ai vu dans certaines circonstances, on utilise le "if" sans le "else", donc je me suis dit que cela peut marcher ici.
    « else » veut dire « sinon ». Ça signifie que le bloc suivant ne sera pris en considération que si la condition précédente a échoué. Ici, ça revient à peu près au même parce que toutes tes conditions sont mutuellement exclusives, mais ce n'est pas systématique.

    Pour ce qui est du [code C] et [/code C], je suis un peu beaucoup un novice, donc je ne sais pas trop comment ça marche l'utilisation des codes dont tu parles.
    Quand tu postes un extrait de programme ici, tu écris

    [code]
    printf ("Bonjour");
    [/code]


    … et cela donnera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        printf ("Bonjour");

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Ah ok d'accord merci je viens de comprendre (pour les différents codes...).

    si a vaut 0, tu divises b par a
    Ne vois-tu pas une erreur ?
    Ouais je viens de voir l'erreur, j'ai oublié de la corriger avant de poster mon message !

    Bon pour ce qui est de else, je pense qu'il y a différentes manières de faire. J'ai essayé sans et avec, ça marche dans les 2 cas (je trouve juste que c'est un peu plus long avec else dans le cas-ci mais ça marche donc...).

    En tout cas merci pour tout !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Equation différentielle second degré
    Par Minimonstre dans le forum MATLAB
    Réponses: 0
    Dernier message: 19/03/2012, 22h04
  2. [Turbo Pascal] [Débutant] Equation du second degré
    Par MEGA-STORM dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 28/11/2008, 17h25
  3. [Turbo Pascal] Equation du second degré
    Par Zero_System dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 13/10/2008, 22h16
  4. Réponses: 6
    Dernier message: 17/11/2007, 13h17
  5. [TP] Equation du second degré
    Par WhiteTigerZ dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 08/11/2006, 22h00

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