Cod sursa(job #1933436)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 20 martie 2017 18:32:49
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.34 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int eval();
int termen();
int factor();
char a[100001],*p;
long long n;
int main()
{
    f.get(a,100001);
    p=a;
    n=eval();
    g<<n;
    return 0;
}
int eval()
{
    int r;
    r=termen();
    while(*p=='+' || *p=='-')
    {
        switch(*p)
        {
        case '+':
            {
                p++;
                r=r+termen();
                break;
            }
        case '-':
            {
                p++;
                r=r-termen();
                break;
            }
        }
    }
    return r;
}
int termen()
{
    int r;
    r=factor();
    while(*p=='*' || *p=='/')
    {
        switch(*p)
        {
        case '*':
            {
                p++;
                r=r*termen();
                break;
            }
        case '/':
            {
                p++;
                r=r/termen();
                break;
            }
        }
    }
    return r;
}
int factor()
{
    int r;
    r=0;
    if(*p=='(')
    {
        p++;
        r=eval();
        p++;
    }
    else
    {
        while(*p>='0' && *p<='9')
        {
            r=r*10;
            r=r+(*p-'0');
            p++;
        }
    }
    return r;
}