Cod sursa(job #2059530)

Utilizator HumikoPostu Alexandru Humiko Data 7 noiembrie 2017 10:10:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;

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

int parnr();
int grad1();
int grad2();

char v[100001];
int i;

int parnr()
{
    int ans = 0;
    if ( v[i] == '(' )
    {
        ++i;
        ans = grad1();
        ++i;
    }
    else
        while ( v[i] <= '9' && v[i] >= '0' )
            ans = ans*10+(v[i++]-'0');
    return ans;
}

int grad2()
{
    int ans = parnr();
    while ( v[i] == '*' || v[i] =='/' )
    {
        if (v[i] == '*')
        {
            ++i;
            ans *= parnr();
        }
        if ( v[i] == '/' )
        {
            ++i;
            ans /= parnr();
        }
    }
    return ans;
}

int grad1()
{
    int ans = grad2();
    while ( v[i] == '+' || v[i] == '-' )
    {
        if ( v[i] == '+' )
        {
            ++i;
            ans += grad2();
        }
        if ( v[i] == '-' )
        {
            ++i;
            ans -= grad2();
        }
    }
    return ans;
}

int main()
{
    fin>>v;
    fout<<grad1();
}