Cod sursa(job #1004434)

Utilizator cozmin97Gemene Cozmin cozmin97 Data 2 octombrie 2013 18:43:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
#define N 100005

using namespace std;

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

char s[N];

int pas;
long Eval();
long Par();
long Termen();
long Factor();

long Numar()
{
    int x=0;
    while('0'<= s[pas] && s[pas]<='9')
    {
        x=x*10+s[pas]-48;
        pas++;
    }
    return x;
}

long Factor()
{
    int x;
    if(s[pas]=='(')
    {
        pas++;
        x=Eval();
        pas++;
    }
    else
        x=Numar();
    return x;
}

long Termen()
{
    int Nr;
    Nr=Factor();
    while(s[pas]=='*' || s[pas]=='/')
    {
        if(s[pas++]=='*')
            Nr*=Factor();
        else
            Nr/=Factor();
    }
    return  Nr;
}
long Eval()
{
    int Nr;
    Nr=Termen();
    while(s[pas]=='+' || s[pas]=='-')
    {
        if(s[pas++]=='+')
            Nr+=Termen();
        else
            Nr-=Termen();
    }
    return Nr;
}
int main()
{
    fin>>s;
    pas=0;
    fout<<Eval()<<"\n";
    return 0;
}