Cod sursa(job #1082135)

Utilizator gapdanPopescu George gapdan Data 14 ianuarie 2014 10:53:56
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>
using namespace std;
int p;
char s[100001];
int eval();
int termen();
int factor();
int nr();
int main()
{
    fstream cin("evaluare.in",ios::in);
    fstream cout("evaluare.out",ios::out);
    cin.getline(s,100000);
    cout<<eval()<<'\n';
    return 0;
}
int eval()
{
    int r=termen();
    while (s[p]=='+' || s[p]=='-')
    {
        if (s[p]=='+') {++p;r+=termen();}
            else {++p;r-=termen();}
    }
    return r;
}
int termen()
{
    int r=factor();
    while (s[p]=='*' || s[p]=='/')
    {
        if (s[p]=='*') {++p;r*=factor();}
            else {++p;r/=factor();}
    }
    return r;
}
int factor()
{
    int r;
    if (s[p]=='(') {++p;r=eval();++p;}
        else if (s[p]<='9' && s[p]>='0') r=nr();
    return r;
}
int nr()
{
    int x=0;
    while (s[p]>='0' && s[p]<='9')
    {
        x=x*10+(s[p]-'0');
        ++p;
    }
    return x;
}