#include <stdio.h>
#include <string.h>

#include "pilha.h"

#define MAX 100

int operando (char);
int valor (char);

main() {
  char posfixa[MAX]; double a, b; int i, m; 
  
  printf("Digite uma expressão aritmética em notação posfixa: ");
  scanf("%s", posfixa); 
  m = strlen(posfixa); 
  inicializa(m);
  for (i=0; i<m; i++) 
    if (operando(posfixa[i]))
      empilha(valor(posfixa[i]));
    else {
      b = desempilha(); a = desempilha(); 
      switch (posfixa[i]) {
      case '+': empilha(a+b); break;
      case '-': empilha(a-b); break; 
      case '*': empilha(a*b); break;
      case '/': empilha(a/b); break;
      }
    }
  printf("resultado: %d\n", desempilha()); 
}

int operando (char ch) {
  if (ch >= 'A' && ch <= 'Z')
    ch = ch - 'A' + 'a';    /* conversão para minúscula */
  return ch >= 'a' && ch <= 'z';
}

int valor (char ch) {
  int r;

  printf("Digite o valor de %c: ", ch);
  scanf("%d", &r);
  return r;
}

