Cod sursa(job #1831563)

Utilizator RazvanGutaGuta Razvan Alexandru RazvanGuta Data 18 decembrie 2016 12:13:10
Problema Evaluarea unei expresii Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100010], *p=s;
int eval();
int termen();
int fact();
int eval()
{
    int r=termen();
    while(*p=='+' || *p=='-' )
        if(*p == '+')
            ++p, r+=termen();
        else
            ++p, r-=termen();
    return r;
}
int termen()
{
    int r=fact();
    while(*p == '*' || *p =='/')
        if(*p == '*')
        {
            ++p;
            r *= fact();
        }
        else
         {
            ++p;
            r /= fact();
         }
    return r;
}
int fact()
{
    int r = 0;
    if(*p == '(')
        ++p, r = eval(),++p;
    else
        while(*p>='0' && *p<='9')
            r = r*10 + *p - '0', ++p;
    return r;
}
int main()
{
    f.getline(s,10010);
   g<<eval();
    return 0;
}