codigo con pilas para hacer una calculadora con notacion postfija

jofis
20 de Mayo del 2005
Por favor necesito urgente que alguien me ayude para realizar una calculadora utilizando la notacion postfija en c++, por favor necesito el codigo. gracias

Alex
20 de Mayo del 2005
el objeto cpila.hpp
#ifndef CPILA_H
#define CPILA_H

class CPila {
public:
typedef double TpElem;

CPila(); //Constructor
~CPila(); //Destructor

void Apilar(const TpElem elem); //Apila un elemento en la pila
void Desapilar(); //Desapila un elemento de la pila
bool EstaVacia() const; //Comprueba si hay elementos en la pila
TpElem Valor() const; //Devuelve el valor almacenado en la cima
void Ver() const;
private:

struct TpNodo {
TpElem elem;
TpNodo *sig;
};
typedef TpNodo *TpLista;

TpLista pila;
};

#endif

la implementacion


#include <cstdlib>
#include "cpila.hpp"
#include <iostream>

using namespace std;

//Constructor
CPila::CPila() {
pila = NULL;
}

//Destructor
CPila::~CPila() {
while (!EstaVacia()) {
Desapilar();
}
}

//Apila un elemento en la pila
void CPila::Apilar(const TpElem elem) {
TpLista ptr;
ptr = new TpNodo;

ptr -> elem = elem;
ptr -> sig = pila;
pila = ptr;
}

//Desapila un elemento de la pila
void CPila::Desapilar() {
TpLista ptr;
ptr = pila;

pila = pila -> sig;
delete ptr;
}

//Comprueba si hay elementos en la pila
bool CPila::EstaVacia() const {
bool vacia = false;

if (pila == NULL) vacia = true;

return vacia;
}

//Devuelve el valor almacenado en la cima
CPila::TpElem CPila::Valor() const {
TpElem valor;

valor = pila -> elem;

return valor;
}

void CPila::Ver() const {
TpLista ptr = pila;

while (ptr != NULL) {
cout << ptr -> elem << \' \';
ptr = ptr -> sig;
}
cout << endl;
}

introduces los numeros en la pila cuando el algoritmo principal encuentre un operador desapilas dos elementos de la pila haces la operación y metes el resultado otra vez en la pila

Espero que te haya ayudado