Cod sursa(job #3237240)

Utilizator vladsoartavlad sofronea vladsoarta Data 7 iulie 2024 12:45:09
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <string>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");

int i;
string s;

int posibprod(),numar();

int expresie()
{
    int sum = posibprod();//posibilitatea de produs
    while(s[i]=='+'||s[i]=='-')
    {
        if(s[i]=='+')
            i++,sum+=posibprod();
        else
            i++,sum-=posibprod();
    }
    return sum;
}
int posibprod()
{
    int prod=numar();//contruieste numarul
    while(s[i]=='*'||s[i]=='/')
    {
        if(s[i]=='*')
            i++,prod*=numar();
        else
            i++,prod/=numar();
    }
    return prod;
}
int numar()
{
    int semn=1,val=0;
    if(s[i]=='-')
    {
        semn=-semn;
        i++;
    }
    if(s[i]=='(')
    {
        i++;
        val=expresie();
        i++;
        return semn*val;
    }
    while(s[i]>='0'&&s[i]<='9')
        val=val*10+(s[i++]-'0');
    return val*semn;
}


int main()
{
    cin>>s;
    cout<<expresie();

    return 0;
}