Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main(){
- int tamanho, topo, i;
- char expressao[15];
- float numeros[15], res;
- printf("Digite a expressao:"); //Lendo (string expressão)
- fflush(stdin);
- gets(expressao);
- for(topo=0, i=topo; topo <= strlen(expressao); topo++){ //Analisando todos caracteres da expressao
- if(isdigit(expressao[topo])){ //Verificando se é digito
- char t[0];
- t [0]= expressao[topo];
- numeros[topo] = atof(t); //Converte e armazena o digito na pilha numeros
- i++; //Topo da pilha numeros é incrementado
- }
- else{ //Indentifaca o operador
- char operador;
- operador = expressao[topo];
- if(operador == '+'){
- float dado1, dado2;
- i--; //Decrementa topo da pilha numero
- dado1 = numeros[i];
- i--; //Decrementa topo da pilha numero
- dado2 = numeros[i];
- res = dado1 + dado2;
- numeros[i] = res; //Armazena o resultado na pilha numero
- i++; //Incrementa topo da pilha numero
- }
- else{
- if(operador == '-'){
- float dado1, dado2;
- i--;
- dado1 = numeros[i];
- i--;
- dado2 = numeros[i];
- res = dado1 - dado2;
- numeros[i] = res;
- i++;
- }
- else{
- if(operador == '*'){
- float dado1, dado2;
- i--;
- dado1 = numeros[i];
- i--;
- dado2 = numeros[i];
- res = dado1 * dado2;
- numeros[i] = res;
- i++;
- }
- else{
- if(operador == '/'){
- float dado1, dado2;
- i--;
- dado1 = numeros[i];
- i--;
- dado2 = numeros[i];
- res = dado1 / dado2;
- numeros[i] = res;
- i++;
- }
- else{
- printf("Resultado: %0.0f",res); //imprime resultado
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement