Cod sursa(job #1343288)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 15 februarie 2015 10:08:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100011],*p;

int expresie();
int termen();
int factor();

int factor(){
    int r;
    if(*p=='('){
        p++;
        r=expresie();
        p++;
    }
    else{
        r=0;
        while(*p>='0' && *p<='9')
            r=r*10+(*p-'0'),p++;
    }
    return r;
}

int termen(){
    int r=factor();
    while(*p=='*' || *p=='/'){

        if(*p=='*')
            p++,r*=factor();
        else
            p++,r/=factor();
    }
    return r;
}

int expresie(){
    int r=termen();
    while(*p=='+' || *p=='-'){
        if(*p=='+')
            p++,r+=termen();
        else
            p++,r-=termen();
    }
    return r;
}

int main(void){
    register int i,j;

    f>>s;
    p=s;
    g<<expresie();
    f.close();
    g.close();
    return 0;
}