Cod sursa(job #1642861)

Utilizator Daria09Florea Daria Daria09 Data 9 martie 2016 16:36:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <cstring>
#define NMAX 100005
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int eval();
int termen();
int factor();
int nr();
int l,p;
char s[NMAX];
int main()
{
    f.getline(s,NMAX);
    l=strlen(s);
    p=0;
    g<<eval();
}
int eval()
{
    int r=termen();
    while(s[p] =='+' || s[p] == '-')
    {

        if(s[p] == '+') {++p;r+=termen();}
            else {++p;r-=termen();}
    }
    return r;
}
int termen()
{
    int r=factor();
    while(s[p] == '*' || s[p] =='/')
    {

        if(s[p] == '*') {++p;r*=factor();}
            else {++p;r/=factor();}
    }
    return r;
}
int factor()
{
    int r=0;
    if(s[p] == '(') {++p;r=eval();++p;}
        else if(s[p] >='0' && s[p]<='9') r=nr();
    return r;
}
int nr()
{
    int r=0;
    while(s[p] >= '0' && s[p] <= '9')
    {
        r=r*10+(s[p]-'0');
        ++p;
    }
    return r;
}