Cod sursa(job #3151406)

Utilizator maryyMaria Ciutea maryy Data 21 septembrie 2023 10:14:20
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
int poz, l;
int factor(), termen(), evaluare();
char e[100001];
int evaluare()
{
    int r=termen();
    while(e[poz]=='-' || e[poz]=='+')
    {
        if(e[poz]=='-')
        {
            poz++;
            r-=termen();
        }
        else if(e[poz]=='+')
        {
            poz++;
            r+=termen();
        }
    }
    return r;
}
int termen()
{
    int r=factor();
    while(e[poz]=='*' || e[poz]=='/')
    {
        if(e[poz]=='*')
        {
            poz++;
            r=r*factor();
        }
        else if(e[poz]=='/')
        {
            poz++;
            r=r/factor();
        }
    }
    return r;
}
int factor()
{
    int r=0;
    if(e[poz]=='(')
    {
        poz++;
        r=evaluare();
        poz++;
    }
    else
    {
        while(e[poz]>='0' && e[poz]<='9')
        {
            r=r*10+e[poz]-'0';
            poz++;
        }
    }
    return r;
}
int main()
{
    in>>e;
    l=strlen(e);
    e[l]='@';
    out<<evaluare();
}