Calculadora polonesa

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (280 palavras )
  • Download(s) : 0
  • Publicado : 1 de junho de 2012
Ler documento completo
Amostra do texto
Calculadora Polonesa

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define S 1
#define N 0
class pilha {
private:
int topo, base, m, len;float *a;
public:
pilha(int);
int cheia();
int vazia();
float topo2();
int empilhar(float);
int desempilhar();
voidmostrar();


};

pilha :: pilha(int len)
{
topo = 0;
base = 0;
m = 0;
this->len = len;
a = (float *)malloc(sizeof(float) *len);
};

int pilha :: cheia()
{
if (m==len) return(S);
return(N);
};

int pilha :: vazia()
{
if (m==0) return(S);
return(N);
};

int pilha :: empilhar(float y)
{
if(cheia() == S) return(-1);
a[topo]=y;
topo++;
m = topo;
return(0);
};

int pilha :: desempilhar()
{
if (vazia() == S) return(-1);
topo--;
m = topo;return(0);
};

float pilha :: topo2()
{
int topoA;
topoA = topo;
topoA --;
return(a[topoA]);
};

void pilha :: mostrar()
{
int i;
system("cls");
printf("\nPilha[base=%d, topo=%d, m=%d, A = { ",base,topo,m);
printf("\nDigite um numero ou um operador: ");
if (vazia() == SIM)
printf(" vazia ");
for(i=0 ; i < topo ; i++)
printf("%.2f", a[i]);
printf(" }\n]\n\n");
};

int main()
{
pilha s(8);
char cValor[20];
float fCalcula;
do {
s.mostrar();
fflush (stdin);
scanf("%[^\n]",cValor);
if(cValor[0] == '+'){
fCalcula = s.topo2();
s.desempilhar();
fCalcula += s.topo2();
s.desempilhar();
s.empilhar(fCalcula);}else
if(cValor[0] == '-'){
fCalcula = s.topo2();
s.desempilhar();
fCalcula -= s.topo2();
s.desempilhar();
s.empilhar(fCalcula);
}else...
tracking img