Cod sursa(job #2063606)

Utilizator iuliachibiciChibici Iulia iuliachibici Data 11 noiembrie 2017 12:17:37
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char sir[100000];
int i;
int exp();
int produs();
int aduna()
{
    int rez=produs();
    while(sir[i]=='+'|| sir[i]=='-')
    {
        if(sir[i]=='+')
        {
            ++i;
            rez=rez+produs();
        }
        else
        {
            ++i;
            rez=rez-produs();
        }
        return rez;
    }
}
    int produs()
    {
        int rez=exp();
        while(sir[i]=='*'||sir[i]=='/')
        {
            ++i;
            if(sir[i]=='*')
                {
                    ++i;
                    rez=rez*produs();
                }
            else
            {
                ++i;
                rez=rez/exp();

            }
        }
        return rez;
    }
    int exp()
    {
        int rez=0;
        if(sir[i]=='(')
        {
            ++i;
            rez=aduna();
            ++i;
        }
        else
        {
            while(sir[i]>='0'&&sir[i]<='9')
            {
                rez=rez*10+(sir[i]-'0');
                ++i;
            }
            return rez;
        }
    }

    int main()
    {
        f.getline(sir,100001);
        g<<aduna();

    return 0;
    }