Cod sursa(job #2287860)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 22 noiembrie 2018 16:29:51
Problema Evaluarea unei expresii Scor 10
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char o[4][4]={"+-","*/"},*p;
int L(int a,int b,char o) {
    switch(o) {
        case '+':return a+b;
        case '-':return a-b;
        case '*':return a*b;
        case '/':return a/b;
    }
}
int E(int l) {
    int x,y;
    if(l==2)
        if(*p=='(')
            ++p,x=E(0),++p;
        else
            for(x=0;*p>='0'&&*p<='9';++p)
                x=x*10+*p-'0';
    else
        for(x=E(l+1);strchr(o[l],*p);x=y,*p++)
            y=L(x,E(l+1),*p);
            /*if(*p=='+')
                y=x+E(l+1),*p++;
            else if(*p=='-')
                y=x-E(l+1),*p++;
            else if(*p=='*')
                y=x*E(l+1),*p++;
            else if(*p=='/')
                y=x/E(l+1),*p++;*/
    return x;
}
int main() {
    p=(char*)malloc(100000*sizeof(char));
    fgets(p,100000,fopen("evaluare.in","r"));
    fprintf(fopen("evaluare.out","w"),"%d",E(0));
}