/* Ficheiro polcalc.c */

#include <stdio.h>
#include "pilha.h"

main(int argc, char * argv[])  {

pilha p; int i=0; double x1,x2 ;

if (argc < 2) {
  printf ("Erro: o comando polcalc precisa de um parametro.\n");
  return ;
}
nova(&p) ;
while ((c=argv[1][i]) != '\0')  {
  if (c == '+')  {
    x2 = topo (&p); retira (&p);
    x1 = topo (&p); retira (&p);
    sobrepoe(&p,x1+x2);
  }
  else if (c == '-')  {
    x2 = topo (&p); retira (&p);
    x1 = topo (&p); retira (&p);
    sobrepoe(&p,x1-x2);
  }
  else if (c == '*')  {
    x2 = topo (&p); retira (&p);
    x1 = topo (&p); retira (&p);
    sobrepoe(&p,x1*x2);
  }
  else if (c == '/')  {
    x2 = topo (&p); retira (&p);
    x1 = topo (&p); retira (&p);
    sobrepoe(&p,x1/x2);
  }
  else if (c == '!')  {
    x1 = topo (&p); retira (&p);
    sobrepoe (&p, -x1);
  }
  else sobrepoe (&p, c-'0');
  i++;
}
printf ("%f\n", topo (&p));
}