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

Turbo Pascal Discussion :

Algorithme expression arithmétique postfixée


Sujet :

Turbo Pascal

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 67
    Par défaut Algorithme expression arithmétique postfixée
    Salut à tous,
    je suis entrain de dévolopper une petite application en Turbo Pascal:
    et comme je suis débutant, j'aimerai bien m'aider.
    le programme permet de lire une expression arithmétique infixées. ex: 1+2*3+4 utilisant la structure des Piles (Empiler, Dépiler, Pile_vide...)

    Je veux transformer cette expression à une expression poste_fixée puis calculer le résultat.
    les procedures:
    - lire la chaine de caractères.
    - extraire le nombres (oprérands), convertir en entier et les mettre dans une Pile.
    - extraire les Opération (+,-,*,/,^,(,),pgcd, ppcm,...) et les mettre dans une autre Pile.
    - respecter la priorité des opérations. ex: * et plus prioritaire que +,

    - afficher l'expression poste fixée

    - afficher le résultat final.

    Merci à tous.
    j'attend vos réponses.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Kao,

    Citation Envoyé par elhou80
    Bonjour,
    Le temps passe, et aucune réponse,
    quelqu'un m'adider svp.
    Du calme, à peine plus de 3 heures entre ta demande et cette réflexion


    C'est un algorithme que tu cherches ou un programme ?

    Si c'est un algorithme, ça n'a rien à voir avec le Pascal en soi.

    Si c'est un programme, en Pascal donc, d'après ton titre, il y a un forum Pascal

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    As-tu déjà codé quelque chose ?

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hol,

    Qu'appelles-tu "débutant" ?

    Si tu es vraiment débutant au sens habituel du terme, il vaudrait mieux commencer par des programmes plus simples pour apprendre le langage.

    En effet, l'expérience montre que vouloir attaquer "bille en tête" est plus un motif d'abandon qu'autre chose.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 67
    Par défaut
    ok, jai dit que suis débutant, c-t-dire dans les structures Piles,
    je veux que la sollution de cet algorithme faite en langage pascal avec les piles, P1, P2,
    les fonctions et procedures (depiler, empiler, est_vide,.., priorite(op?),...)

    Merci de m'aider.

    ex: ((56+23)+(7*8)) = -------- 56 23 + 8 7 * + =
    et l'affichage du résultat = 137

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 67
    Par défaut
    Citation Envoyé par wormful_sickfoot
    As-tu déjà codé quelque chose ?

    j'ai pas compris ton message

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 67
    Par défaut
    salut,
    voilà, j'ai un essai de mon problème, mais pas complet,

    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
    program expression_arithmetique;
      uses crt;
      cons N=200;
      type pile=record
                  elem:array[1..N] of integer;  (* elements de la pile  *)
                  s: integer;  (* indice de sommet *)
                end;
     
      var p1,p2,p3:pile;
          i:integer;
          exp:string;
     
     
      function est_vide(var P:pile):boolean;
      begin
        est_vide := (P.s=0);
      end;
     
      procedure empiler(var p:pile;e:integer);
      begin
        (* si l pile n'est pas pleine ! *)
        if P.s=N then write(‘Pile Pleine’)
        else begin 
          p.s:=p.s+1;
          p.elem[p.s]:=e;
        end;  
      end;
     
      procedure depiler(var p:pile);
      begin
        (* si la pile n'est pas vide ! *)
        if P.s=0 then 
          write('Pile vide')
        else 
          p.s:=p.s-1;
      end;
     
      procedure creerPile;
        var p:pile;
      begin
        p.s:=0;
        (* alocc du tableau si necessaire *)
        (* retouner P *)
      end;
     
      function sommet(P : pile): element;
      begin
        if est_vide(P) then 
           write(‘pile vide’) 
        else 
           sommet:=P.elem[P.s];
      end;
     
      procedure vide_pile(var P : pile);
      begin
        while (P<>nil) then depiler(P);
      end;
     
      function priorite(op1:char):integer;
      begin
        case op1 of
          '^': priorite:=6;
          '*': priorite:=5;
          '/': priorite:=4;
          '+': priorite:=3;
          '-': priorite:=2
          { ..........}
        end;
      end;
     
      procedure Lire_Expression;
      begin
      end;
     
      procedure Afficher_PosteFixe;
      begin
      end;
     
      procedure Afficher_Result;
      begin
      end;
     
     
      Procedure Menu_Principal;
      begin
        { ..... Menu principal}
      end;
     
     
    begin
      clrscr;
      Menu_principal;
     
     
    end.


    **** J'attend un programme plus simple svp

  8. #8
    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
    Citation Envoyé par elhou80
    **** J'attend un programme plus simple svp
    rends le tien plus lisible(indenté,et commentaire) et apres on vera

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/05/2007, 11h02
  2. Réponses: 1
    Dernier message: 03/01/2007, 15h07
  3. Réponses: 1
    Dernier message: 09/12/2006, 10h13
  4. Parsing d'expressions arithmétiques
    Par Premium dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 23/08/2006, 15h09
  5. Evaluation d'une expression arithmétique
    Par MysticKhal_0 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 10/03/2006, 18h25

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