Cod sursa(job #1906287)

Utilizator valorosu_300Cristian Gherman valorosu_300 Data 6 martie 2017 13:05:27
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
const int N=100009;
char s[N],op[4][4]={"+-","*/","^",""};
int loc;
bool cif(char x){
    return(x>='0'&&x<='9');
}
int eval(int a,int b,char x){
    switch(x){
        case '+': return a+b;
        case '-': return a-b;
        case '*': return a*b;
        case '/': return a/b;
    }
}
int expr(int lev){
    int x,y;
    if(lev==2)
        if(s[loc]=='('){
            loc++;
            x=expr(0);
            loc++;
        }
        else
            for(x=0;cif(s[loc]);loc++)
                x=x*10+s[loc]-'0';
    else
        for(x=expr(lev+1);strchr(op[lev],s[loc]);x=y)
            y=eval(x,expr(lev+1),s[loc++]);
    return x;
}
int main()
{
    int l;
    in.getline(s,N,'\n');
    in.close();
    l=strlen(s);
    s[l]='\n';
    out<<expr(0)<<"\n";
    out.close();
    return 0;
}