Advertisement
Guest User

Transform the Expression

a guest
Oct 7th, 2014
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.03 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. char token[1000];
  5. char stack[1000];
  6. char *sp = stack;
  7.  
  8. void getToken(){
  9.     char c;
  10.     int i;
  11.     for(i = 0; (c = getchar()) != '\n'; i++)
  12.         token[i] = c;
  13.     token[i] = '\0';
  14.     return;
  15. }
  16.  
  17. int isop(char *p){
  18.     if(!islower(*p) && *p != '(' && *p != ')')
  19.         return 1;
  20.     else
  21.         return 0;
  22. }
  23.  
  24. inline int fastint(){
  25.     int r = 0;
  26.     char c = getchar();
  27.     while(c == '\n')
  28.         c = getchar();
  29.     while(c != '\n'){
  30.         r = (r*10) + (c - '0');
  31.         c = getchar();
  32.     }
  33.     return r;
  34. }
  35.  
  36. void push(char *p){
  37.     if(sp <= (stack+1000))
  38.         *sp++ = *p;
  39.     return;
  40. }
  41.  
  42. void pop(){
  43.     if((sp - stack) >= 0)
  44.         putchar(*--sp);
  45.     else
  46.         return;
  47. }
  48.  
  49. char *expression(char *p){
  50.     while(*p != ')' && *p != '\0') {
  51.         if(isalpha(*p) && !isspace(*p))
  52.             putchar(*p);
  53.         else if(isop(p))
  54.             push(p);
  55.         else if(*p == '('){
  56.             p = expression(++p);
  57.         }
  58.         p++;
  59.     }
  60.     pop();
  61.     return p;
  62. }
  63.  
  64. int main(){
  65.     int i = fastint();
  66.    
  67.     while(i){
  68.         getToken();
  69.         expression(token);
  70.         putchar('\0');
  71.         putchar('\n');
  72.         i--;
  73.     }
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement