Cod sursa(job #2207067)

Utilizator DarkwarriorRobert Gaspar Darkwarrior Data 24 mai 2018 20:24:02
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 kb
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
int evaluare(char a[],int st,int dr)
{
    int depth=0;
    for(int i=dr; i>=st; i--)
    {
        if(a[i]=='(')depth++;
        if(a[i]==')')depth--;
        if(depth==0)
        {
            if(a[i]=='+')
            {
                return evaluare(a,st,i-1)+ evaluare(a,i+1,dr);
            }
            if(a[i]=='-')
            {
                return evaluare(a,st,i-1)- evaluare(a,i+1,dr);
            }
        }
    }
    for(int i=dr; i>=st; i--)
    {
        if(a[i]=='(')depth++;
        if(a[i]==')')depth--;
        if(depth==0)
        {
            if(a[i]=='*')
            {
                return evaluare(a,st,i-1)*evaluare(a,i+1,dr);
            }
            if(a[i]=='/')
            {
                return evaluare(a,st,i-1)/evaluare(a,i+1,dr);
            }
        }
    }
    if(a[st] == '('&&a[dr]==')')
    {
        return evaluare(a,st+1,dr-1);
    }
    int rez=0;
    for(int i=st; i<=dr; i++)
        rez=rez*10+a[i]-'0';
    return rez;
}
int main()
{
    ifstream f("evaluare.in");
    ofstream g("evaluare.out");
    char a[100000];
    int n;
    f.getline(a,100000);
    n=strlen(a);
    cout<<evaluare(a,0,n-1);
    return 0;
}