Cod sursa(job #1116298)

Utilizator bogdanpaunFMI Paun Bogdan Gabriel bogdanpaun Data 22 februarie 2014 14:33:02
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;

ifstream fin("evaluare.in");
ofstream g("evaluare.out");

char s[100005], *p;

int e(),t(),f();

int main(){
    fin>>s;
    p = s;
    g<<e();
    return 0;
}

int e(){
    int r = t();
    while( *p == '+' || *p == '-'  )
        switch( *p ){
            case '+':{  ++p;  r+=t(); break;   }
            default :{  ++p;  r-=t(); break;   }       }
    return r;
}

int t(){
    int r = f();
    while( *p == '*' || *p == '/' )
        switch( *p ){
            case '*':{ ++p; r*=f(); break; }
            default :{ ++p; r/=f(); break; }         }
    return r;
}

int f(){
    int r=0;
    if( *p == '(' ) { ++p; r = e(); ++p; return r;  }
    while( *p >= '0' && *p <= '9' ) { r = r*10 + *p - '0'; ++p;  }
    return r;

}