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

Pascal Discussion :

Résolution de ax²+bx+c=0


Sujet :

Pascal

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut Résolution de ax²+bx+c=0
    Bonjour a tous,
    alors déjà, il faut savoir que je suis début en Pascal et en programmation tout court.
    J'étudie le pascal en BTS Info. Le prof d'info nous a demandé de faire un programme permettant de resoudre ax²+bx+c=0.
    Sans me donner la reponse, pourriez vous m'éclaircir..
    Pour l'instant j'ai ecrit cela:
    ===
    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
    {-----Déclaration-----}
     
    Var  a,b,c,delta:real; //Penser à mettre "integer" pour CHAQUE variable.
     
            {-----Traitement----}
     
    begin     {----- Initialisation-----}
          write ('Valeur de A?  ');
          readln (a);
          write ('Valeur de B?  ');
          readln (b);
          write ('Valeur de C?  ');
          readln (c);
          delta:=(b*b)-4*a*c; <== c'est a cette ligne que sa "foire"
          read (delta);
          write ('Resultat  ',delta);
    readln; {-----Permet de ne pas fermer le programme automatiquement apres execution-----}
    end.
    ====
    Suis-je dans le droit chemin? Pour delta, auriez vous une petite aide?
    Pour l'instant, je ne connais que les read, xrite, if, then, else donc je doit me débrouillez avec cela.
    Le prof nous a aussi dis que racine de delta s'ecrit sqrt (delta)...
    Merci de vos futur reposes et bonne soirée a tous.

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour et bienvenue !

    Le dernier
    ne sert à rien (et est même carrément de trop), puisque cette valeur est calculée par le programme.
    Sinon, ça me semble correct.

    Et la racine carrée est bien la fonction sqrt() (sqrt = "square root").
    Mais si, comme ton commentaire l'indique, tu penses remplacer les réels par des entiers, sache que la fonction sqrt() provoquera une erreur de compilation.

    Bonne prog !
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut Re
    MErci pour cette reponse rapide
    Par contre, la je me perd maintenant, a quoi sert read? write c'est bien pour affiché? humm jsuis paumé.. mais merci beaucoup

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Alcatîz
    Et la racine carrée est bien la fonction sqrt() (sqrt = "square root").
    Mais si, comme ton commentaire l'indique, tu penses remplacer les réels par des entiers, sache que la fonction sqrt() provoquera une erreur de compilation.
    Ok, mais a ce moment la, comment dois-je definir mes var?
    a, b,c:real mais delta est consideré comme quoi a ce moment là?
    (si, je precise que je suis NUL en math, sa maide pas tout sa...)
    Merci pour votre attention.

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Read sert à lire quelque chose au clavier... Il n'est pas très approprié en général d'ailleurs, car se débrouille mal avec certains caractères... Il vaut mieux utiliser readln dans la majorité des cas

    Pour tes variables: a, b et c entiers car ce sont des entiers, et delta réel (mais ca aurait pu être entier) si tu veux utiliser la fonction sqrt plus tard, pour le calcul de tes racines

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        var
          a, b, c : Integer;
          delta : real;
        ...
        delta := sqr(b) - (4*a*c);
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  6. #6
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Citation Envoyé par Alcatîz
    Bonjour et bienvenue !

    Le dernier
    ne sert à rien (et est même carrément de trop), puisque cette valeur est calculée par le programme.
    Sinon, ça me semble correct.

    Et la racine carrée est bien la fonction sqrt() (sqrt = "square root").
    Mais si, comme ton commentaire l'indique, tu penses remplacer les réels par des entiers, sache que la fonction sqrt() provoquera une erreur de compilation.

    Bonne prog !
    cool
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut je suis nouveau dans ce forum mais j'ai déjà réalisé un programme qui résoud les équations de la forme ax²+bx+c=0 pour toutes valeurs de a, b et c

    Voici le code:
    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
    program resolution;
    uses wincrt;
     
    var a,b,c,d :real;
     
    begin
     
         writeln('Ce programme est déstiné à résoudre tous les équations de la forme aXX +bX +c= 0');
         writeln('veuillez saisir a,b et c quand c''est demandé');
     
         writeln('saisir a :');
         readln (a);
         writeln ('saisir b :');
         readln (b) ;
         writeln ('saisir c :');
         readln (c);
     
         if (a=0) and (b=0) and (c=0)
                      then
     
                          begin
                               writeln('l''équation admet comme solutions tout IR');
                          end
     
     
         else if (a=0) and (b=0) and (c<>0)
                      then
     
                          begin
                               writeln('l''équation n''a pas de solutions');
                          end
     
     
         else if (a=0) and (b<>0)
                      then
     
                          begin
                               writeln ('l''équation admet comme solutions X = ',-c/b:2:2);
                          end
     
     
         else
                          begin
     
                               d:= sqr(b)-4*a*c;
                               if d=0
                                  then
                                      begin
                                           writeln('l''équation admet comme solutions X = ',-b/(2*a):2:2);
                                      end
     
     
                               else if d<0
                                  then
                                      begin
                                           writeln('l''équation n''admet pas de solutions');
                                      end
     
     
                               else
                                      begin
                                           writeln('l''équation admet comme solutions :');
                                           writeln('   X1 = ',(-b-sqrt(d))/(2*a):2:2);
                                           writeln('   X2 = ',(-b+sqrt(d))/(2*a):2:2);
                                      end;       
                          end;
    end.

  8. #8
    Membre du Club
    Profil pro
    développeur VBA
    Inscrit en
    Août 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : développeur VBA

    Informations forums :
    Inscription : Août 2006
    Messages : 57
    Points : 54
    Points
    54
    Par défaut ax2+bx+c
    As tu appris l'existence des nombres imaginaires?
    Car si c'est le cas le programme est incomplet

  9. #9
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par ZeitnotZatopek
    As-tu appris l'existence des nombres imaginaires ?
    Car si c'est le cas le programme est incomplet
    Je vous fais cette proposition plus simple et plus complète. Enfin je pense.
    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
    {Equation du second degré}
    clrscr;
    Var a,b,c,del,del1,x,x1,x2,R,Im:real;
    BEGIN
         Writeln('Entrez les valeur de a, b, et c');
         Readln(a,b,c);
         del:=sqr(b)-4*a*c;
         IF del>0 THEN
            Begin
               x1:=(-b-sqrt(del))/2*a;
               x2:=(-b+sqrt(del))/2*a;
               Writeln('L''‚quation admet deux solution r‚el:',x1:2:2 , 'et' ,x2:2:2);
            End
         ELSE
            Begin
            if del=0 then
                 begin
                 x:=-b/2*a;
                 writeln('L''‚quation admet une solutionn unique:',x:2:2);
                 end
            else if del<0 then
                 begin
                 del1:=abs(del);
                 R:=-b/2*a;
                 Im:=sqrt(del1);
                 Writeln('L''‚quation admet deux solutions imaginaires:',R:2:2,'-i',Im:2:2, 'et' ,R:2:2,'+i',Im:2:2);
                 end
             End
    END.
    - Le cas a=0 n'est pas envisagé car si c'est le cas, l'équation n'est pas de second degré
    - Dans une équation de second degré, a et b ne peuvent être nuls en même temps ! Par contre b et c peuvent être nuls simultanément ou différemment.

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 89
    Points : 53
    Points
    53
    Par défaut
    La solution d'Anselmo est nettement meilleure, les cas sont del>0 del=0 et del<0.
    J'ai remarqué que le solveur de la SHARP EL-506W n'est pas sensible au fait que a soit nul. On peut faire la même chose avec le programme d'Anselmo.
    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
    {Equation du second degré}
     
    program degre2;
    uses wincrt;
    Var a,b,c,del,del1,x,x1,x2,R,Im:real;
    BEGIN
         Writeln('Entrez les valeur de a, b, et c');
         Readln(a,b,c);
         del:=sqr(b)-4*a*c;
         if a=0 then
         begin
         x:=-c/b;
         writeln('c''est une équation du premier degré,');
         writeln('la solution est x=',x:2:2);
         end
         else
         begin 
         if del>0 THEN
            Begin
               x1:=(-b-sqrt(del))/2*a;
               x2:=(-b+sqrt(del))/2*a;
               Writeln('L''équation admet deux solution réelles:',x1:2:2 , 'et' ,x2:2:2);
            End
         ELSE
            Begin
            if del=0 then
                 begin
                 x:=-b/2*a;
                 writeln('L''équation admet une solutionn double:',x:2:2);
                 end
            else if del<0 then
                 begin
                 del1:=abs(del);
                 R:=-b/2*a;
                 Im:=sqrt(del1);
                 Writeln('L''équation admet deux solutions imaginaires:',R:2:2,'-i',Im:2:2, 'et' ,R:2:2,'+i',Im:2:2);
                 end
             End
    		 end
    END.
    Écrire une procédure dont le temps de création dépend essentiellement de ma vitesse de frappe au clavier n'a pas le moindre intérêt !
    --- droggo.

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

Discussions similaires

  1. [XSLT][JSP] solution technique pour cas typique
    Par Alix_10 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/09/2006, 13h09
  2. Réponses: 21
    Dernier message: 30/08/2004, 17h07
  3. 1 SOLUTION : plusieurs anim dans un fichier x
    Par heidi79 dans le forum DirectX
    Réponses: 1
    Dernier message: 28/08/2003, 09h19
  4. [Kylix] solution
    Par raggadoll dans le forum EDI
    Réponses: 1
    Dernier message: 27/05/2003, 11h43
  5. Les Cookies 4° ! : LA SOLUTION
    Par Ph. B. dans le forum XMLRAD
    Réponses: 2
    Dernier message: 31/01/2003, 16h46

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