#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef enum {lparen, rparen, plus, mines, times, divide, mod, eos, operand} precedence;


void set_(void) {
    precedence stack[100];
    static int isp[]={0,19,12,12,13,13,13,0};
    static int icp[]={20,19,12,12,13,13,13,0};
}
precedence get_token(char *symbol, int *n){
    *symbol = expr[(*n)++];
    switch(*symbol){
        case '(': return lparen;
        case ')': return rparen;
        case '+': return plus;
        case '-': return mines;
        case '/': return divide;
        case '*': return times;
        case '%': return mod;
        case ' ': return eos;
        default: return operand;
        
    }
}

void postfix(void){
    char symbol;
    precedence token;
    int n=0;
    int top=0
    stack[0]=eos;
    for(token=get_token(&symbol, &n);token!=eos;token=get_token(&symbol, &n)){
        if(token==operand) printf("%c", symbol);
        else if(token==rparen){
            while(static[top]!=lparen)
                print_token(pop());
            pop();
        }
        else{
            while(isp[static[top]>=icp[token]])
                print_token(pop());
            push(token);
        }
    }
    while((token=pop())!= eos)
        print_token(token);
    printf("\n";)
    }
}

int eval(void){
    precedence token;
    char symbol;
    int op1, op2;
    int n=0;
    int top =-1;
    token = get_token(&symbol, &n);
    while(token != eos){
        if(token == operand)
            push(symbol-'0');
        else{
            op2=pop();
            op1=pop();
            switch (token) {
                case plus: push(po1+po2); break;
                case mines: push(po1-po2); break;
                case times: push(po1*po2); break;
                case divide: push(po1/po2); break;
                case mod: push(po1%po2); break;
            }
        }
        token = get_token(&symbol, &n);
    }
    return pop();
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: