Advertisement
Gabriel_Rofl

Validação da expressao

Oct 26th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.06 KB | None | 0 0
  1. int read_expression(char* expressao){
  2.  
  3.     char operador;
  4.     int i, flag_true;
  5.     flag_true = 1;
  6.     i = 0;
  7.     t_pilha* pilha = aloca_pilha();
  8.     while(expressao[i] != '\0' && flag_true == 1){
  9.         if(expressao[i] == '(' || expressao[i] == '[' || expressao[i] == '{'){
  10.             push(pilha, expressao[i]);
  11.         }//Condicional para ver um operador de inicio
  12.         if(expressao[i] == ')' || expressao[i] == ']' || expressao[i] == '}'){
  13.             if(pilha_vazia(pilha)){
  14.                 flag_true = 0;
  15.             }
  16.             else{
  17.                 operador = (char) pop(pilha);
  18.                  if(operador == '(' && expressao[i] != ')'){
  19.                     flag_true = 0;
  20.                  }
  21.                  if(operador == '[' && expressao[i] != ']'){
  22.                     flag_true = 0;
  23.                  }
  24.                  if(operador == '{' && expressao[i] != '}'){
  25.                     flag_true = 0;
  26.                  }
  27.             }
  28.         }//Condicional para ver o operador de final
  29.         i++;
  30.     }
  31.    
  32.     if(flag_true == 0 || !pilha_vazia(pilha)){
  33.         libera_pilha(pilha);
  34.         pilha = NULL;
  35.         return 0;/*Verificar na compilacao se ta certo essas 5 linhas*/
  36.         //retornar pro menu e esvaziar a pilha
  37.     }
  38.     else{
  39.         return 1;
  40.         //retonar a expressao e continuar
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement