#include #include #include int c_ulohy = 0, p_uloh; char signstack[20480]; int signum; void *letstack[20480]; int letnum; struct exp { struct exp *l, *r; char op; }; struct exp * new = NULL; char newx = 'A'; void evaluate(void) { char c = signstack[--signum]; void *i, *j; if (c!='(') { i = letstack[--letnum]; j = letstack[--letnum]; new = malloc(sizeof(struct exp)); /* printf("%c = %c %c %c\n", new, j, c, i);*/ new->l = j; new->r = i; new->op = c; letstack[letnum++] = new; } } void print(struct exp *e, struct exp *p) { if ((e >= 'a') && (e <= 'z')) { putchar( (char) e ); return; } if (p && ((e->op == '+') || (e->op == '-')) && ((p->op == '*') || (p->op == '/'))) { putchar('('); print(e,NULL); putchar(')'); return; } if (p && ((p->op == '-') || (p->op == '/')) && (p->r == e)) { if (!(((e->op == '*') || (e->op == '/')) && (p->op == '-'))) { putchar('('); print(e,NULL); putchar(')'); return; } } print(e->l,e); putchar(e->op); print(e->r,e); } int main(void) { scanf("%d\n", &p_uloh); for (c_ulohy=0; c_ulohy < p_uloh; c_ulohy++) { int i,j,k; char buf[10240]; gets(buf); /* printf("got %s\n", buf);*/ j = strlen(buf); new = '0'; signum = 0; letnum = 0; signstack[signum++] = '('; for (i=0; i