Cod sursa(job #2946875)

Utilizator TraianQTraianQ TraianQ Data 25 noiembrie 2022 11:32:18
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>
using namespace std;
long long expresie(),termen(),factor();
string cuv;
int p=0;
long long expresie()
{
    long long val=termen();
    while(cuv[p]=='+' || cuv[p]=='-')
    {
        if(cuv[p]=='+')
        {
            p++;
            val=val+termen();
        }
        else
        {
            p++;
            val=val-termen();
        }
    }
    return val;
}
long long termen()
{
    long long val=factor();
    while(cuv[p]=='*' || cuv[p]=='/')
    {
        if(cuv[p]=='*')
        {
            p++;
            val=val*factor();
        }
        else
        {
            p++;
            val=val/factor();
        }
    }
    return val;
}
long long factor()
{
    long long val=0;
    if(cuv[p]=='(')
    {
        p++;
        val=expresie();
        p++;
    }
    else
    {
        while(cuv[p]>='0' && cuv[p]<='9')
        {
            val=val*10+(cuv[p]-'0');
            p++;
        }
    }
    return val;
}
int main()
{
    ifstream cin("evaluare.in");
    ofstream cout("evaluare.out");
    cin>>cuv;
    cuv+='$';
    cout<<expresie();
    return 0;
}