Cod sursa(job #1873498)

Utilizator Radu_Galan1Galan Radu Radu_Galan1 Data 9 februarie 2017 09:48:40
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char s[100010],*p=s;
int expr();
int factor()
{
    int r;
    if(*p=='('){++p;r=expr();++p;}
        else {
            r=0;
            while('0'<=*p && *p<='9')
            {
                r=r*10+(*p)-'0';p++;
            }
        }
    return r;
}

int termen()
{
    int r=factor();
    while(*p=='*' || *p=='/')
        switch(*p)
    {
        case '*' : ++p;r*=factor();break;
        case '/' : ++p;r/=factor();break;
    }
    return r;
}

int expr()
{
    int r=termen();
    while(*p=='+' || *p=='-')
        switch(*p)
    {
        case '+': ++p;r+=termen();break;
        case '-': ++p;r-=termen();break;
    }
    return r;
}

int main()
{
    in>>s;
    out<<expr()<<'\n';
    return 0;
}