Cod sursa(job #2109920)

Utilizator ianiIani Biro iani Data 20 ianuarie 2018 11:25:45
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <stack>
#include <cstring>

using namespace std;

char c[100001];

int ev(int st,int dr)
{
    int v=0;
    for (int i=dr; i>=st; i--)
        if (c[i]==')')
            v++;
        else if (c[i]=='(')
            v--;
        else if (v==0)
        {
            if (c[i]=='+')
                return ev(st,i-1)+ev(i+1,dr);
            else if (c[i]=='-')
                return ev(st,i-1)-ev(i+1,dr);
        }
    v=0;
    for (int i=dr; i>=st; i--)
    {
        if (c[i]==')')
            v++;
        else if (c[i]=='(')
            v--;
        else if (v==0)
        {
            if (c[i]=='*')
                return ev(st,i-1)*ev(i+1,dr);
            else if (c[i]=='/')
                return ev(st,i-1)/ev(i+1,dr);
        }
    }
    if (c[st]=='('&&c[dr]==')')
        return ev(st+1,dr-1);
    v=0;
    for (int i=st; i<=dr; i++)
        v=v*10+c[i]-'0';
    return v;
}

int main()
{
    ifstream fin ("evaluare.in");
    ofstream fout ("evaluare.out");
    fin>>c;
    fout<<ev(0,strlen(c)-1);
    return 0;
}