Cod sursa(job #1650877)

Utilizator ade_tomiEnache Adelina ade_tomi Data 11 martie 2016 21:13:57
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
string s;
int i;
int expresie();
int factor();
int termen();
int expresie()
{

    int rez=0;
    rez=termen();
    while(s[i]=='+'||s[i]=='-')
    {

        if(s[i]=='+')
        {
            i++;
            rez+=termen();


        }
        else
        {

            i++;
            rez-=termen();
        }
    }
    return rez;
}
int termen()
{
    int rez=0;
    rez=factor();
    while(s[i]=='*'||s[i]=='/')
    {

        if(s[i]=='*')
        {

            i++;
            rez*=factor();
        }
        else
        {

            i++;
            rez/=factor();
        }
    }
    return rez;
}
int factor()
{
    int rez=0;
    if(s[i]=='(')
    {

        i++;
        rez=expresie();
        i++;
    }
    else
    {

        while(s[i]>='0'&&s[i]<='9')
        {

            rez*=10;
            rez+=s[i]-'0';
            i++;
        }
    }
    return rez;
}
int main()
{

    ifstream cin("evaluare.in");
    ofstream cout("evaluare.out");
    cin>>s;
    cout<<expresie();
    return 0;
}