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 :

[Débutant] Affichage d'équation


Sujet :

Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 67
    Par défaut [Débutant] Affichage d'équation
    Bonsoir chers amis
    Voilà j'ai essayé avec un programme de résoudre une équation. Le programme se compile normalement mais voilà, j'ai deux problèmes : si vous pouviez m'expliquer et me donner des idées.

    Alors le 1er c'est : en affichant l'équation, je ne sais pas comment faire pour afficher la puissance 2 sur le x c a d ===> X² . Il n'arrive pas à faire ça quand je mets puissance deux, il me dit "problem string" ou quelque chose comme ça

    Ma 2ème question : c'est en affichant les résultats, quand je mets des variables en integer, il me les affiche bien lol enfin sans virgule - oui ça je le sais - mais je préfère que de mettre real; quand je veux le résultat exact, il m'écrit beaucoup de 0 après le résultat normal et aussi des lettres à la fin. Pourquoi il me marque ça ?

    Ma 3ème question : c'est dans le cas où A=0 ou b=0, il ne m'affiche pas les résultats :s il se ferme rapidement :s je ne sais pas pourquoi.

    Voilà, merci d'avance pour vos réponses et je m'excuse si j'en demande trop !
    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
    program Equation;
    var a,b,c,x:integer;
    y1,y2,z1,z2,y3,d:real;
    E:boolean;
    nom:string  ;
    car : char;
     
    begin
    repeat
    Writeln('');
    Writeln('');
    writeln('donner votre nom Merci') ;
    readln(nom);
    writeln('Bonjour  ',nom,' et bienvenu sur notre petit programme !!');
    writeln('=========Resolution de votre equation===========');
    writeln('donner le chiffre a de Votre equation  ');
    readln(a);
    writeln('donner le chiffre b de Votre equation  ');
    readln(b);
    writeln('donner le chiffre c de Votre equation  ');
    readln(c);
    writeln('Equation :',a,'X²+',b,'X+',c,'=0','');
    E:=(a)*x*x + (b)*x + (c) =0;
    if a=0 then
      begin
       z1:= -c div b ;
       writeln('l''equation est une equation de premier degres ');
       writeln(' la Solution ====>',z1);
        end
         else
           if b=0 then
            begin
            z2 := -c div x*x ;
            writeln('l''equation a une solution double ');
            writeln(' la Solution ====>',z2);
            readln;
            end
              else
              d:=(b*b)- 4*(a*c);
              writeln('delta =====>',d:5);
              if d>0 then
              begin
                y1:= -b- SQRT(d) / (2*a);
                y2:= -b+ sQRT(d) / (2*a);
                writeln('l''equation a deux solutions ');
                writeln('Sole 1 =======>',y1);
                writeln('Sole 2 =======>',y2);
              end
                Else
                    if (d=0) then
                    begin
                      y3:= -b div(2*a) ;
                      writeln('l''equation a une seule solution ',y3);
                    end
                        else
                         if (d<0) then
              writeln('l''equation n''a pas de solution');
     
              writeln('Taper sur Entrer');
              readln;
        writeln('voulez vous ressayer?');
        writeln('>>N<<=========>NO, Press any key =======>Yes');
         readln(car);
         Writeln('aurevoir  ',nom);
         until car = 'n';
    end.
    Bon voilà mon code :
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Par défaut
    Ma 3ème question : c'est dans le cas où A=0 ou b=0, il ne m'affiche pas les résultats :s il se ferme rapidement :s je ne sais pas pourquoi.
    tout simplement tu ne gères pas ce cas...

    tu fais if(a=0)...else if(b=0)...

    Donc soit a=0, soit b=0, soit aucun des deux


    Ma 2ème question : c'est en affichant les résultats, quand je mets des variables en integer, il me les affiche bien lol enfin sans virgule - oui ça je le sais - mais je préfère que de mettre real; quand je veux le résultat exact, il m'écrit beaucoup de 0 après le résultat normal et aussi des lettres à la fin. Pourquoi il me marque ça ?
    Simplement, il te l'affiche sous forme scientifique...
    avec une mantisse réelle m à 20 chiffres et un exposant e signé à 4 chiffres
    En gros, le nombre 7 par ex serait écrit 0.70000000000000E+0001...
    pour changer ça,

    Write(z1:6:2); par exemple,

    cela t'afficheras z1 en 6 caractères avec 2 chiffres après la virgule

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 67
    Par défaut
    Citation Envoyé par Tuxico Voir le message
    Simplement, il te l'affiche sous forme scientifique...
    avec une mantisse réelle m à 20 chiffres et un exposant e signé à 4 chiffres
    En gros, le nombre 7 par ex serait écrit 0.70000000000000E+0001...
    pour changer ça,

    Write(z1:6:2); par exemple,

    cela t'afficheras z1 en 6 caractères avec 2 chiffres après la virgule
    bonsoir les amis je vous remerci pour vos reponses je commence par remercier Tuxico bn :
    merci pour lastuce des chiffres apres la virgule !jai essayé et ca marche tres bien !
    bn courage a tous !

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Die,
    Citation Envoyé par swayly Voir le message
    Alors le 1er c'est : en affichant l'équation, je ne sais pas comment faire pour afficher la puissance 2 sur le x c a d ===> X² . Il n'arrive pas à faire ça quand je mets puissance deux, il me dit "problem string" ou quelque chose comme ça
    Classiquement, on utilise ^ comme symbole d'élévation à la puissance:
    attention, ce n'est pas du code pascal valide, seulement une manière d'afficher.

    D'autre part, que pensais-tu faire avec cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    E:=(a)*x*x + (b)*x + (c) =0;
    A cela s'ajoutent :

    - dans le cas a=0:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    if a=0 then
      begin
       z1:= -c div b ;
       writeln('l''equation est une equation de premier degres ');
    ...
    soit une division par 0 si b est égalament = 0.

    - si a <> 0 et que b = 0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
        if a = 0 then
        begin
          z1 := -c div b;
          Writeln('l''equation est une equation de premier degres ');
          Writeln(' la Solution ====>', z1);
        end
        else if b = 0 then
        begin
          z2 := -c div x * x;
          Writeln('l''equation a une solution double ');
    ...
    utilisation de x non initialisée, et d'ailleurs ce n'est pas la bonne formule, c'est justement x qu'on recherche.

    - dans le cas de déterminant nul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
                    if (d=0) then
                    begin
                      y3:= -b div(2*a) ;
                      writeln('l''equation a une seule solution ',y3);
                    end
    ...
    l'équation a en fait 2 racines égales (soit une racine double).

    - et à la fin, pour demander si on veut continuer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
        writeln('>>N<<=========>NO, Press any key =======>Yes');
         readln(car);
         Writeln('aurevoir  ',nom);
         until car = 'n';
    ...
    l'affichage suggère qu'il faut entrer N pour arrêter, et tu testes seulement n.

    Il est possible qu'il y ait d'autres problèmes, mes remarques font suite à une lecture rapide.

  5. #5
    Membre confirmé Avatar de Transgarp
    Profil pro
    Inscrit en
    Février 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 99
    Par défaut
    Pour la recherche d'inconnues, j'utilise la méthode des matrices et déterminants que j'ai codé en Pascal

    J'ai poussé à 9 inconnues et il y aurait possibilité de pousser plus fortement le nombre d'inconnues, mais selon mes besoins présents, 9 inconnues me suffit

  6. #6
    Membre émérite Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Par défaut
    méthode d'élimination de gauss

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Gie,
    Citation Envoyé par Transgarp Voir le message
    Pour la recherche d'inconnues, j'utilise la méthode des matrices et déterminants que j'ai codé en Pascal

    J'ai poussé à 9 inconnues et il y aurait possibilité de pousser plus fortement le nombre d'inconnues, mais selon mes besoins présents, 9 inconnues me suffit
    C'est bien, mais quel est le rapport avec le sujet ?

  8. #8
    Membre confirmé Avatar de Transgarp
    Profil pro
    Inscrit en
    Février 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 99
    Par défaut
    Citation Envoyé par droggo Voir le message
    Gie,

    C'est bien, mais quel est le rapport avec le sujet ?
    Simplement pour mentionner, qu'il me parait plus ardu d'utiliser la recherche d'inconnues de swayly, quand le nombre d'inconnues est supérieur à 2

    Comme Tuxico le mentionne, j'utilise la méthode d'élimination de Gauss qui me semble plus facile à utiliser, pour la recherche d'inconnues de type a,b,c,d,etc.....X


    Ne m'en voulez pas, l'optimisation de programme est ma petite manie

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Fie,
    Citation Envoyé par Transgarp Voir le message
    Simplement pour mentionner, qu'il me parait plus ardu d'utiliser la recherche d'inconnues de swayly, quand le nombre d'inconnues est supérieur à 2

    Comme Tuxico le mentionne, j'utilise la méthode d'élimination de Gauss qui me semble plus facile à utiliser, pour la recherche d'inconnues de type a,b,c,d,etc.....X


    Ne m'en voulez pas, l'optimisation de programme est ma petite manie
    Quand il s'agit de résoudre une équation du second degré, et de cela uniquement, la méthode que tu utilises revient à écraser une mouche avec un marteau-pilon, ce n'est donc pas vraiment une "optimisation ".

    De plus, cela est un des exercices ultra classiques pour les débutants, et il ne faut jamais oublier qu'il faut commencer par apprendre les bases avant d'aller plus loin.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 67
    Par défaut
    Citation Envoyé par droggo
    Die,

    Classiquement, on utilise ^ comme symbole d'élévation à la puissance:

    attention, ce n'est pas du code pascal valide, seulement une manière d'afficher.
    Bonsoir Droggo alors pour cette astuce je crois que je ne lai pas tres bien compris car voila ce que jai essayé et ca na rien donné jai suivis ce que vs maviez dis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      writeln('Equation :',a,'X',^2,'+',b,'X+',c,'=0','');

    Citation Envoyé par droggo
    D'autre part, que pensais-tu faire avec cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    E:=(a)*x*x + (b)*x + (c) =0;
    ==> alors pour ca bon je lai appris dans ce forum que l'un de nos amis sur ce forum avait deja eu ce genre de problèe quil faisait l'algo tout juste mais il ne s'executait pas et la solution c 'était car il na pas declaré E : comme boolean et avoir fait ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    E:=(a)*x*x + (b)*x + (c) =0;
    Citation Envoyé par droggo
    - et à la fin, pour demander si on veut continuer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
        writeln('>>N<<=========>NO, Press any key =======>Yes');
         readln(car);
         Writeln('aurevoir  ',nom);
         until car = 'n';
    ...
    l'affichage suggère qu'il faut entrer N pour arrêter, et tu testes seulement n.
    et pour ca oui c'est exactement ce que je veux cest quand je clique sur N op le programme se ferme cest bien ca ce que jai ecris nn? et quand je le test ca marche ou alors j'ai pas compris ce que vous essayez de me dire voila

    sinon je vous remercie pour les remarques et pour votre reponse a bientot !

    Merci encore Cher Droggo et bon courage a tous !

  11. #11
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour
    Citation Envoyé par swayly Voir le message

    et pour ca oui c'est exactement ce que je veux cest quand je clique sur N op le programme se ferme cest bien ca ce que jai ecris nn? et quand je le test ca marche ou alors j'ai pas compris ce que vous essayez de me dire voila

    sinon je vous remercie pour les remarques et pour votre reponse a bientot !

    Merci encore Cher Droggo et bon courage a tous !

    Ce que droggo essaie de te dire c'est que l'affichage propose un N(majuscule ) mais toi tu testes sur un n(miniscule) et dans le cas où l'utilisateur entre un majuscule il sortira jamais ;Et comme tu lis juste un caractere regardes du coté de Readkey
    Cordialement

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 67
    Par défaut
    Citation Envoyé par krachik Voir le message
    Bonjour



    Ce que droggo essaie de te dire c'est que l'affichage propose un N(majuscule ) mais toi tu testes sur un n(miniscule) et dans le cas où l'utilisateur entre un majuscule il sortira jamais ;Et comme tu lis juste un caractere regardes du coté de Readkey
    Cordialement
    bonsoir merci pour lexplication ''Krachik'' et oui vs avez raison pour le n( miniscule) bn jai essayé de mettre readkey a la place et je vois que ca na rien donné
    cest sur que je ne sais pas lutiliser ce readkey dapres le mot je comprend quil lit la lettre introduite par le clavier oui et apres? je dois mettre mettre quoI? je dois rajouté le n( miniscule ) ?
    voila comment jai fais et maintenant le program ne sort jamais surment quil est faut !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    writeln('>>N<<=========>NO, Press any key =======>Yes');
         readln(car);
         Writeln('aurevoir  ',nom);
         until car = 'readkey';
    end.
    merci pour votre reponse davance !

  13. #13
    Membre émérite Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Par défaut
    j'ai juste regardé en vitesse mais si j'ai bien suivi ce que tu veux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    writeln('>>N<<=========>NO, Press any key =======>Yes');
         readln(car);
         Writeln('aurevoir  ',nom);
         until car = 'readkey';
    end.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while(car <> 'n') AND (car <> 'N') do
    begin
         writeln('>>N<<=========>NO, Press any key =======>Yes');
         car := readKey;
         Writeln('aurevoir  ',nom);
    end.

Discussions similaires

  1. [Débutant] Affichage d'un video avi sur le web
    Par oumani dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 06/02/2006, 13h47
  2. [Débutant] affichage opengl dans un TPanel
    Par minnit_s dans le forum OpenGL
    Réponses: 1
    Dernier message: 01/01/2006, 23h03
  3. [Débutant] Affichage d'une grille
    Par Mathieu.J dans le forum OpenGL
    Réponses: 25
    Dernier message: 13/06/2004, 19h38
  4. [QuickReport][Débutant] Affichage d'un graphique
    Par poufouille dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/03/2004, 09h03
  5. [Débutant] Affichage impossible en local
    Par Alberto dans le forum ASP
    Réponses: 2
    Dernier message: 29/11/2003, 16h45

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