Cod sursa(job #876139)

Utilizator TheShadowsAlexandru Cristian TheShadows Data 11 februarie 2013 12:52:12
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<fstream>
using namespace std;
const int LIM = 100010;
char s[LIM], *p=s;
int factor();
int termen();
int expresie();
int factor(){
    int val=0, semn=1;
    while(*p=='-'){
        semn=-semn;
        p++;
    }
    if(*p=='('){
        p++;
        val=expresie();
        p++;
        return semn*val;
       }
    while(*p>='0'&&*p<='9'){
        val=val*10+*p-'0';
        p++;
    }
    return semn*val;
}
int expresie(){
    int sum=termen();
    while(*p=='+'||*p=='-')
        if(*p=='+'){
            p++;
            sum+=termen();
        }else if(*p=='-'){
            p++;
            sum-=termen();
        }
    return sum;
}
int termen(){
    int sum=factor();
    while(*p=='*'||*p=='/'){
        if(*p=='*'){
            p++;
            sum*=factor();
        }else if(*p=='/'){
            p++;
            sum/=factor();
        }
    }
    return sum;
}
int main(){
    ifstream in("evaluare.in");
    ofstream out("evaluare.out");
    in.getline(s, LIM-1);

    out<<expresie()<<"\n";

    return 0;
}