fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class No{
  5. public:
  6. char dado;
  7. No *next;
  8. No(char item, No *ptr= NULL){
  9. dado=item;
  10. next=ptr;
  11. }
  12. };
  13.  
  14. class pilha
  15. {
  16. public:
  17. pilha();
  18. char top();
  19. char pop();
  20. void push(char);
  21. char topAndPop();
  22. void printPilha();
  23. bool pilhaVazia();
  24. protected:
  25. private:
  26. No *topo;
  27. };
  28.  
  29. pilha::pilha(){
  30. topo = NULL;
  31. }
  32. bool pilha::pilhaVazia(){
  33. return topo == NULL;
  34. }
  35.  
  36. void pilha::push(char value){
  37. topo = new No(value,topo);
  38. }
  39.  
  40. void pilha::printPilha(){
  41. if(pilhaVazia()){
  42. cout << endl << " PILHA VAZIA" << endl;
  43. }else{
  44. No *aux;
  45. aux = topo;
  46. while(aux->next != NULL){
  47. cout << endl << " EMPILHANDO: " << aux->dado << endl;
  48. aux = aux->next;
  49. }
  50.  
  51. }
  52. }
  53.  
  54. pilha obj;
  55.  
  56. void getExpression(){
  57. string expressao;
  58. int tamExpressao,cont = 0;
  59. char vet[10];
  60. cout << endl << " -------------------------------------" << endl;
  61. cout << " CALCULADORA " << endl;
  62. cout << " -------------------------------------" << endl;
  63. cout << " DIGITE A EXPRESSAO QUE O RESULTADO E COMIGO: ";
  64. expressao = "((1+2)*4)+3";
  65.  
  66. tamExpressao = expressao.size();
  67. while(tamExpressao != 0){
  68. if((expressao[tamExpressao] == '(') || (expressao[tamExpressao] == ')')){
  69. tamExpressao--; // IGNORA
  70. }else{
  71. if((expressao[tamExpressao] == '+') || (expressao[tamExpressao] == '*') || (expressao[tamExpressao] == '/')){
  72. vet[cont] = expressao[tamExpressao];
  73. cont++;
  74. tamExpressao--; // CALCULA
  75. }else{
  76. obj.push(expressao[tamExpressao--]); // INSERIR NO TOPO
  77. }
  78.  
  79. }
  80. }
  81. cont--;
  82. cout << endl;
  83. for(cont; cont >= 0; cont--){
  84. cout << endl << " OPERADORES: " << vet[cont] << endl;
  85. }
  86. }
  87.  
  88. int main() {
  89. getExpression();
  90. obj.printPilha();
  91. return 0;
  92. }
Success #stdin #stdout 0s 3276KB
stdin
Standard input is empty
stdout
  -------------------------------------
               CALCULADORA 
  -------------------------------------
   DIGITE A EXPRESSAO QUE O RESULTADO E COMIGO: 

     OPERADORES: +

     OPERADORES: *

     OPERADORES: +

     EMPILHANDO: 1

     EMPILHANDO: 2

     EMPILHANDO: 4

     EMPILHANDO: 3