Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.     int tamanho, topo, i;
  7.     char expressao[15];
  8.     float numeros[15], res;
  9.    
  10.     printf("Digite a expressao:");  //Lendo (string expressão)
  11.     fflush(stdin);
  12.     gets(expressao);   
  13.    
  14.     for(topo=0, i=topo; topo <= strlen(expressao); topo++){     //Analisando todos caracteres da expressao
  15.    
  16.         if(isdigit(expressao[topo])){ //Verificando se é digito
  17.             char t[0];
  18.             t [0]= expressao[topo];
  19.             numeros[topo] = atof(t); //Converte e armazena o digito na pilha numeros
  20.             i++; //Topo da pilha numeros é incrementado
  21.         }
  22.         else{   //Indentifaca o operador
  23.             char operador;
  24.             operador = expressao[topo];
  25.             if(operador == '+'){
  26.                 float dado1, dado2;
  27.                 i--;                //Decrementa topo da pilha numero
  28.                 dado1 = numeros[i];
  29.                 i--;                //Decrementa topo da pilha numero
  30.                 dado2 = numeros[i];
  31.                 res = dado1 + dado2;
  32.                 numeros[i] = res;   //Armazena o resultado na pilha numero
  33.                 i++;                //Incrementa topo da pilha numero                  
  34.             }
  35.             else{
  36.                 if(operador == '-'){
  37.                     float dado1, dado2;
  38.                     i--;               
  39.                     dado1 = numeros[i];
  40.                     i--;
  41.                     dado2 = numeros[i];
  42.                     res = dado1 - dado2;
  43.                     numeros[i] = res;
  44.                     i++;
  45.                 }
  46.                 else{
  47.                     if(operador == '*'){
  48.                         float dado1, dado2;
  49.                         i--;               
  50.                         dado1 = numeros[i];
  51.                         i--;
  52.                         dado2 = numeros[i];
  53.                         res = dado1 * dado2;
  54.                         numeros[i] = res;
  55.                         i++;
  56.                     }
  57.                     else{
  58.                         if(operador == '/'){
  59.                             float dado1, dado2;
  60.                             i--;               
  61.                             dado1 = numeros[i];
  62.                             i--;
  63.                             dado2 = numeros[i];
  64.                             res = dado1 / dado2;   
  65.                             numeros[i] = res;
  66.                             i++;
  67.                         }
  68.                         else{
  69.                             printf("Resultado: %0.0f",res); //imprime resultado
  70.                         }              
  71.                     }                      
  72.                 }                  
  73.             }              
  74.         }      
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement