Cod sursa(job #2103616)

Utilizator ARobertAntohi Robert ARobert Data 10 ianuarie 2018 15:56:10
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

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

char expr[100060];
char *t=expr;

long long factor();
long long termen();

long long eval(){
long long r=termen();
while (*t=='-'||*t=='+')
{
    if (*t=='+')
        t++, r+=termen();
    else t++, r-=termen();
}
return r;
}

long long termen(){
long long r=factor();
while (*t=='-'||*t=='+')
{
    if (*t=='+')
        t++, r*=factor();
    else t++, r/=factor();
}
return r;
}

long long factor()
{
    long long r=0;
    if (*t=='(')
    {
        t++;
        r=eval();
        t++;
    }
    else
    {
        while (*t>='0'&&*t<='9')
        {
            r=r*10+*t-'0';
            t++;
        }
    }
    return r;
}

int main()
{
    fin>>expr;
    fout<<eval();
    return 0;
}