Cod sursa(job #1820470)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 1 decembrie 2016 19:34:40
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <stdio.h>
#define lim 100005
char s[lim];
int k;
int expr();
int term();
int fact();
int expr(){
    int rez;
    rez=term();
    while(s[k]=='+'||s[k]=='-'){
        if(s[k]=='+'){
            k++;
            rez=rez+term();
        }
        else{
            k++;
            rez=rez-term();
        }
    }
    return rez;
}
int term(){
    int rez;
    rez=fact();
    while(s[k]=='*'||s[k]=='/'){
        if(s[k]=='*'){
            k++;
            rez=rez*fact();
        }
        else{
            k++;
            rez=rez/fact();
        }
    }
    return rez;
}
int fact(){
    int rez;
    if(s[k]=='('){
        k++;
        rez=expr();
        k++;
    }
    else{
        rez=0;
        while(s[k]>='0'&&s[k]<='9'){
            rez=rez*10+s[k]-'0';
            k++;
        }
    }
    return rez;
}
int main(){
    FILE *fin,*fout;
    fin=fopen("evaluare.in","r");
    fout=fopen("evaluare.out","w");
    int rez,k=0;
    s[k]=fgetc(fin);
    while(s[k]!=EOF&&s[k]!='\n'&&s[k]!=' '){
        k++;
        s[k]=fgetc(fin);
    }
    k=0;
    rez=expr();
    fprintf(fout,"%d",rez);
    fclose(fin);
    fclose(fout);
    return 0;
}