Cod sursa(job #1969800)

Utilizator raduzxstefanescu radu raduzx Data 18 aprilie 2017 17:34:07
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>

using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
#define nmax 100010
char s[nmax],*p;
int evaluare();
int factor();
int termen();
int evaluare()
{
    int t=factor();
    while(*p=='+' or *p=='-')
    {
        if(*p=='+')
        {
            p+=1;
            t+=factor();
        }
        else
        {
            p+=1;
            t-=factor();
        }
    }
    return t;
}
int factor()
{
    int t=termen();
    while(*p=='*' or *p=='/')
    {
        if(*p=='*')
        {
            p+=1;
            t*=termen();
        }
        else
        {
            p+=1;
            t/=termen();
        }
    }
    return t;
}
int termen()
{
    if(*p=='(')
    {
        p+=1;
        int t=evaluare();
        p+=1;
        return t;
    }
    else
    {
        int t=0;
        while(*p<='9' and  *p>='0')
        {
            t=t*10+*p-'0';
            p+=1;
        }
        return t;
    }
}
int main()
{
    f>>s;
    p=s;
    g<<evaluare();
    return 0;
}