Cod sursa(job #2174484)

Utilizator ioana_marinescuMarinescu Ioana ioana_marinescu Data 16 martie 2018 12:15:09
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
const int MAX_L = 100005;
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char s[MAX_L];
int i;

int adunare();
int inmultire();
int expresie();

int adunare()
{
    int val=inmultire();
    while(s[i]=='+' || s[i]=='-') {
        i++;
        if(s[i-1]=='+')
            val+=inmultire();
        else
            val-=inmultire();
    }
    return val;
}

int inmultire()
{
    int val=expresie();
    while(s[i]=='*' || s[i]=='/') {
        i++;
        if(s[i-1]=='*')
            val*=expresie();
        else
            val/=expresie();
    }
    return val;
}

int expresie()
{
    int val=0;
    if(s[i]=='(') {
        i++;
        val=adunare();
        i++;
        return val;
    }
    while(s[i]>='0' && s[i]<='9') {
        val=val*10+s[i]-'0';
        i++;
    }
    return val;
}

int main()
{
    fin>>s;
    fout<<adunare();
    return 0;
}