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

Algorithmes et structures de données Discussion :

Conversion en notation polonaise inversée ou postfixée


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Par défaut Conversion en notation polonaise inversée ou postfixée
    Bonjour,

    Je suis en train de travailler sur un programme en C basé sur la conversion d'une chaîne de caractère (calcul tapé à la calculatrice) en rpn (notation postfixée). J'aimerai donc ranger la chaine de caractère dans un tableau nommé "chaine" et de parcourir ce tableau de gauche à droite puis extraire de ce tableau les arguments et les opérateurs afin de créer une pile nommée "postfix". J'ai donc un problème en ce qui concerne les priorités des opérateurs et des parenthèses, savoir si c'est un nombre ou non.

    Par exemple, (3+5)*6 --> 35+6*

    Si vous pouvez m'aider....

    Cordialement,

    pcmessi

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    tu peux aller jeter un oeil sur le Défi no 2 du forum C..


    Mais aussi, logiquement, l'analyse se fait en comptant les parenthèses ouvertes, en stockant sous forme générique, et en calculant par parenthèse fermante...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Par défaut opérateur-argument
    J'ai commencé à avancer mais il me manque le problème de priorité entre les opérateurs et surtout comment différencier opérateur et argument. il faut que je passe par le code ASCII?
    operateur et nombre sont des fonctions ici mais il faut que je différencie argument et opérateur. la fonction me renverra vrai si cest un argument pour la fonction nombre et faux si c'est un opérateur .
    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
     
    Début
    i <-- 0
    j <-- 0
    Tant que (i inférieur à (nombre de caractères -1))
    	Si opérateur (tab[i])
    		Empiler (tab[i]) dans Pile[k]
    		k <-- k+1
    FONCTION PRIORITE????
    	Sinon 
    		Si tab[i] = ‘)’
    			dépiler  Pile [k-1]
    			tabRes[j] <-- empiler Pile [k-1] 
    k <-- k-1
    			j <-- j+1
    		Sinon 
    Si nombre(tab[i])
    	tabRes[j] <-- tab[i]
    	j <-- j+1
    			Sinon défault
    		Fin du Si
    	Fin du Si
    	i <-- i+1
    Fin du Tant que
    Fin

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Par défaut ???
    ???

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    pour différencier opérateur et argument, c'est assez simple... tu DOIS posséder une liste des opérateurs possibles (il va bien falloir faire les bonne opérations). Il suffit juste après d'un parsing...


    Pour la priorité, je ré-itère qu'il faut compter le nombre de parenthèses ..

    Le plus de parenthèses = la plus grande priorité...

Discussions similaires

  1. algorithme de la notation polonaise inverse
    Par sihamnet dans le forum C
    Réponses: 16
    Dernier message: 12/06/2013, 22h32
  2. Interpréteur Notation Polonaise Inverse
    Par arkhamon dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/02/2010, 14h59
  3. Réponses: 6
    Dernier message: 02/11/2008, 11h57
  4. explications sur notation polonaise, postfixe
    Par Inh[Star]Noz dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 01/11/2008, 13h25
  5. Conversion fpu -> notation scientifique décimale
    Par Alucard_Math dans le forum Assembleur
    Réponses: 4
    Dernier message: 13/05/2004, 16h44

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