Cod sursa(job #1950562)

Utilizator ticozaurStratila Andrei ticozaur Data 3 aprilie 2017 10:01:30
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char *p,c[100001];
int evaluare1();
int evaluare3(){
    int rez=0;
    if(*p=='(')
    {
        p++;
        rez=evaluare1();
        p++;
    }
    else while(*p>='0' && *p<='9'){
        rez=rez*10+(*p-'0');
        p++;
    }
    return rez;
}
int evaluare2()
{
    int rez=evaluare3();
    while(*p=='*' || *p=='/'){
        if(*p=='*'){
            p++;
            rez*=evaluare2();
        }
        else{
            p++;
            rez/=evaluare2();
        }
    }
    return rez;
}
int evaluare1()
{
    int rez=evaluare2();
    while(*p=='+' || *p=='-'){
        if(*p=='+'){
            p++;
            rez+=evaluare2();
        }
        else{
            p++;
            rez-=evaluare2();
        }
    }
    return rez;
}
int main()
{
    fin>>c;
    p=c;
    fout<<evaluare1();
    return 0;
}