Cod sursa(job #2903146)

Utilizator TraianQTraianQ TraianQ Data 17 mai 2022 10:34:40
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>
using namespace std;
long long factor(),termen();
string EVAL;
int poz=0;
long long evaluare()
{
    long long R=termen();
    while(EVAL[poz]=='+' || EVAL[poz]=='-')
    {
        if(EVAL[poz]=='+')
        {
            poz++;
            R+=termen();
            continue;
        }
        else if(EVAL[poz]=='-')
        {
            poz++;
            R-=termen();
            continue;
        }
    }
    return R;
}
long long termen()
{
    long long R=factor();
    while(EVAL[poz]=='*' || EVAL[poz]=='/')
    {
        if(EVAL[poz]=='*')
        {
            poz++;
            R*=factor();
            continue;
        }
        else if(EVAL[poz]=='/')
        {
            poz++;
            R/=factor();
            continue;
        }
    }
    return R;
}
long long factor()
{
    long long r=0;
    if(EVAL[poz]=='(')
    {
        poz++;
        r=evaluare();
        poz++;
    }
    else
    {
        while(EVAL[poz]>='0' && EVAL[poz]<='9')
        {
            r=r*10+EVAL[poz]-'0';
            poz++;
        }
    }
    return r;
}
int main()
{
    ifstream cin("evaluare.in");
    ofstream cout("evaluare.out");
    cin>>EVAL;
    EVAL+='$';
        cout<<evaluare();
    return 0;
}