Cod sursa(job #2238521)

Utilizator andrei42Oandrei42O andrei42O Data 6 septembrie 2018 10:38:30
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>
#define NMAX 100010
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char *c,s[NMAX];
int suma(),produs(),paranteze(),nr();
int main()
{
    f>>s;
    c=s;
    cout<<suma();
    return 0;
}
int suma()
{
    int ret;
    ret=produs();
    while(*c=='+' || *c=='-')
    {
        if(*c=='+')
            c++,ret+=produs();
        else
            c++,ret-=produs();
    }
    return ret;
}
int produs()
{
    int ret=paranteze();
    while(*c=='*' || *c=='/')
    {
        if(*c=='*')
            c++,ret*=paranteze();
        else
            c++,ret/=paranteze();
    }
    return ret;
}
int paranteze()
{
    int ret;
    if(*c=='(')
    {
        c++;
        ret=suma();
        c++;
    }
    else
        ret=nr();
    return ret;

}
int nr()
{
    int ret=0;
    while(*c>='0' && *c<='9')
    {
        ret*=10;
        ret+=*c-'0';
        c++;
    }
    return ret;
}