codigo con pilas para hacer una calculadora con notacion postfija
Por favor necesito urgente que alguien me ayude para realizar una calculadora utilizando la notacion postfija en c++, por favor necesito el codigo. gracias
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
#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