Cod sursa(job #1189052)

Utilizator BogdanOuatuOuatu Bogdan-Ioan BogdanOuatu Data 21 mai 2014 10:47:35
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100020];
char *p=s;
int Term();
int Fact();
int Eval()
{
    int r=Term();
    while(*p=='+'||*p=='-')
        {
            if(*p=='+')
            {
                p++;
                r+=Term();
            }
            else
            {
                p++;
                r-=Term();
            }
        }
    return r;
}

int Term()
    {
        int r=Fact();
        while(*p=='*'||*p=='/')
            {
                if(*p=='*')
                    {
                        p++;
                        r*=Fact();
                    }
                else
                    {
                        p++;
                        r/=Fact();
                    }
            }
        return r;
    }
int Fact()
    {
        int r=0;
        if(*p=='(')
           {
               ++p;
               r=Eval();
               ++p;
           }
        else
            {

                for(;*p>='0'&&*p<='9';p++)
                    {
                        r=r*10+*p-'0';
                    }

            }
        return r;
    }
int main()
{
    fin>>s;
    fout<<Eval()<<'\n';
    fin.close();
    fout.close();
    return 0;
}