Valutazione espressione postfissa

  • Creatore Discussione Creatore Discussione mark9
  • Data di inizio Data di inizio

mark9

Nuovo Utente
30 Dic 2014
11
0
0
Ciao a tutti,
sto studiando le strutture dati in c++.

Ho questo pezzo di codice che valuta una espressione postfissa in cui compaiono addizione e moltiplicazione (notazione polacca) basato sull'utilizzo di una pila:

Codice:
#include <iostream>
#include <string>
#include “pila.h”
int main(
int argc, char *argv[]
){
   char 
*a = argv[1]
; int N = strlen(a);
   pila<int> postf(N); int el;
   for (int i = 0; i < N; i++){
      if (a[i] == '+'){
         el = postf.leggiPila(); postf.fuoriPila();
         postf.inPila( el + postf.leggiPila()); postf.fuoriPila()
      }
      if (a[i] == '*'){
         el = postf.leggiPila(); postf.fuoriPila();
         postf.inPila(el * postf.leggiPila()); postf.fuoriPila()
      }
      if ((a[i] >= '0') && (a[i] <= '9')){
         el = postf.leggiPila(); postf.fuoriPila();
         postf.inPila(10 * el + (a[i++]-'0'));
      }
   }
   cout << postf.fuoriPila() << endl;
}

Vorrei capire meglio la logica per utilizzare la pila per il calcolo e cosa significa questa riga:

postf.inPila(10 * el + (a[i++]-'0'));

Grazie!
 

Discussioni simili