Cod sursa(job #2811159)

Utilizator SeracovanuEdwardSeracovanu Edward SeracovanuEdward Data 1 decembrie 2021 13:35:20
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>

using namespace std;

FILE *f=fopen("evaluare.in","r");
FILE *g=fopen("evaluare.out","w");
const int nmax=100005;
char s[nmax],*p=s;
long long int termen();
long long int factor();
long long int eval()
{
    long long int r=termen();
    while(*p=='+' || *p=='-')
        switch(*p)
        {
        case '+':
            ++p;
            r+=termen();
            break;
        case '-':
            ++p;
            r-=termen();
            break;
        }
    return r;
}
int main()
{
    fgets(s,nmax,f);
    fprintf(g,"%d ",eval());
}
long long int factor(){
long long int r=0;
if(*p=='('){
++p;
r=eval();
++p;
}else while(*p>='0' && *p<='9'){
        r=r*10+*p-'0';
        ++p;
        }
return r;
}
long long int termen()
{
    long long r=factor();
    while(*p=='*' || *p=='/')
        switch(*p)
        {
        case '*':
            ++p;
            r*=factor();
            break;
        case '/':
            ++p;
            r/=factor();
            break;
        }
return r;
}