Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- char token[1000];
- char stack[1000];
- char *sp = stack;
- void getToken(){
- char c;
- int i;
- for(i = 0; (c = getchar()) != '\n'; i++)
- token[i] = c;
- token[i] = '\0';
- return;
- }
- int isop(char *p){
- if(!islower(*p) && *p != '(' && *p != ')')
- return 1;
- else
- return 0;
- }
- inline int fastint(){
- int r = 0;
- char c = getchar();
- while(c == '\n')
- c = getchar();
- while(c != '\n'){
- r = (r*10) + (c - '0');
- c = getchar();
- }
- return r;
- }
- void push(char *p){
- if(sp <= (stack+1000))
- *sp++ = *p;
- return;
- }
- void pop(){
- if((sp - stack) >= 0)
- putchar(*--sp);
- else
- return;
- }
- char *expression(char *p){
- while(*p != ')' && *p != '\0') {
- if(isalpha(*p) && !isspace(*p))
- putchar(*p);
- else if(isop(p))
- push(p);
- else if(*p == '('){
- p = expression(++p);
- }
- p++;
- }
- pop();
- return p;
- }
- int main(){
- int i = fastint();
- while(i){
- getToken();
- expression(token);
- putchar('\0');
- putchar('\n');
- i--;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement