Cod sursa(job #979868)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 3 august 2013 00:44:00
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <string.h>

using namespace std;

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

char s[100001];
int i,n;

int term ();
int factor ();

int expression ()
{
    int res = term();
    while (s[i]=='+' || s[i]=='-')
    {
        ++i;
        if (s[i-1]=='+')  res += term ();
        else res -= term ();
    }
    return res;
}

int term ()
{
    int res = factor ();
    {
        while (s[i]=='*' || s[i]=='/')
        {
            ++i;
            if (s[i-1]=='*') res *= factor ();
            else res /= factor ();
        }
    }
    return res;
}

int factor ()
{
    int res=0;
    if (s[i]=='(')
    {
        ++i;
        res = expression ();
        ++i;
    }
    else while (s[i]>='0' && s[i]<='9')
    {
        res = res*10 + s[i]-'0';
        ++i;
    }
    return res;
}

int main()
{
    fin>>s;
    n = strlen(s);

    i=0;
    fout<<expression ();
}