Cod sursa(job #2903143)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 17 mai 2022 10:34:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
#include <iostream>
using namespace std;
int factor(),termen();
string EVAL;
int poz=0;
int evaluare()
{
    int R=termen();
    while(EVAL[poz]=='-' || EVAL[poz]=='+')
    {
        if(EVAL[poz]=='-')
        {
            poz++;
            R-=termen();
        }
        else
			if(EVAL[poz]=='+')
			{
				poz++;
				R+=termen();
			}
    }
    return R;
}
int termen()
{
    int F=factor();
    while(EVAL[poz]=='*' || EVAL[poz]=='/')
    {
        if(EVAL[poz]=='*')
        {
            poz++;
            F*=factor();
        }
        else
			if(EVAL[poz]=='/')
			{
				poz++;
				F/=factor();
			}
    }
    return F;
}
int 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;
}