Cod sursa(job #2501728)

Utilizator rchiteaIRCHIT rchitea Data 30 noiembrie 2019 09:55:54
Problema Evaluarea unei expresii Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#define ZERO 0
using namespace std;

char c[1000];
int i;

int solve();
int mult();
int num();

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

int solve()
{
    int t=mult();
    while(c[i]=='+' || c[i]=='-')
    {
        if(c[i]=='+')
        {
            i++;
            t+=mult();
        }
        else if(c[i]=='-')
        {
            i++;
            t-=mult();
        }
    }
    return t;
}

int mult()
{
    int t=num();
    while(c[i]=='*' || c[i]=='/')
    {
        if(c[i]=='*')
        {
            i++;
            t*=num();
        }
        else if(c[i]=='/')
        {
            i++;
            t/=num();
        }
    }
    return t;
}

int num()
{
    int t=ZERO;
    if(c[i]=='(')
    {
        i++;
        t=solve();
        i++;
    }
    else
    {
        while(isdigit(c[i]))
        {
            t=t*10+(int)c[i]-48;
            i++;
        }
    }
    return t;
}

int main()
{
    in.getline(c, 1000);
    out << solve();
    return 0;
}