Cod sursa(job #2721016)

Utilizator dddddddaria ioana tanase dddddd Data 11 martie 2021 15:01:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
char s[100005];
int p=0;
int eval();
int fact(){
    int nr=0,semn=1;
    if(s[p]=='('){
       p++;
       nr=eval();
       p++;
    }
    else if(s[p]=='-'){
        p++;
        semn=-1;
    }
    else{
        while(s[p]>='0' && s[p]<='9'){
            nr=nr*10+s[p]-'0';
            p++;
        }
    }
    return nr*semn;
}
int term(){
    int sum=fact();
    while(s[p]=='*' || s[p]=='/'){
        if(s[p++]=='*'){
            sum*=fact();
        }
        else{
            sum/=fact();
        }
    }
    return sum;
}
int eval(){
    int sum=term();
    while(s[p]=='+' || s[p]=='-'){
        if(s[p++]=='+'){
            sum+=term();
        }
        else{
            sum-=term();
        }
    }
    return sum;
}
int main()
{
    in>>s;
    out<<eval();
    return 0;
}