int mdc (int x, int y) { int num, den, res; if (is_higher(x,y)) { num = x; den = y; } else { num = y; den = x; } do { if (den != 0) { res = num%den; if (res !=0) { num = den; den = res; } } else res = 0; } while (res != 0); return den; }
int infix_to_postfix(char *infix, char *postfix, int n) { int i = 0,j=0, top = 0; char *a; a = (char*)malloc(n * sizeof(char)); if(a == NULL) return -1; while(i < n) { if(isdigit(infix[i])) printf("%c", infix[i]); else if(infix[i] == '+' || infix[i] == '-' || infix[i] == '*'|| infix[i] == '/') { while(top > 0 && !is_higher(infix[i], a[top-1])) { printf("%c", a[--top]); } a[top++] = infix[i]; } else if(infix[i] == '(') a[top++] = infix[i]; else if(infix[i] == ')') { while(top > 0 && a[top-1] != '(') { printf("%c", a[--top]); } if(top > 0 && a[top-1] == '(') --top; } ++i; } free(a); }