Cod sursa(job #832244)

Utilizator nicnic28nichita trita nicnic28 Data 10 decembrie 2012 09:24:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
using namespace std;
ifstream d("evaluare.in");
ofstream g("evaluare.out");

char s[100001], *p;
bool cifra(char t);
int termen();
int factor();
int expresie();

int main()
{
    d.getline(s,100001);
    p=s;
    g<<expresie()<<'\n';
    return 0;
}

int expresie(){
    int s=termen();
    while(*p=='+'||*p=='-'){
        if(*p=='+'){
            p++;
            s+=termen();
        }else{
            p++;
            s-=termen();
        }
    }
    return s;
}
int termen(){
    int s=factor();
    while(*p=='*'||*p=='/'){
        if(*p=='*'){
            p++;
            s*=factor();
        }else{
            p++;
            s/=factor();
        }
    }
    return s;
}
int factor(){
    int semn=1,val=0;
    while(*p=='-'){
          p++;
          semn=-semn;
    }
    if(*p=='('){
       p++;
       val=expresie();
       p++;
       return val*semn;
    }
    while(cifra(*p)){
        val=val*10+(*p-'0');
        p++;
    }
    return semn*val;
}
bool cifra(char t){
    return (t>='0'&&t<='9');
}