Cod sursa(job #1722558)

Utilizator liviu23Liviu Andrei liviu23 Data 28 iunie 2016 13:49:56
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <string.h>
#include <iostream>
#define DIM 100005
using namespace std;

char s[DIM];
int p,len;

int getTerm();
int getFact();

int eval() {
    int ans=0;
    while(p<len&&s[p-1]!=')')
        ans+=getTerm(),p++;
    return ans;
}

int getTerm() {
    int term=getFact();
    while(s[p]=='*'||s[p]=='/') {
        p++;
        if(s[p-1]=='*')
            term*=getFact();
        else
            term/=getFact();
    }
    return term;
}

int getFact() {
    if(s[p]=='(') {
        p++;
        return eval();
    }
    int fact=0;
    while(s[p]>='0'&&s[p]<='9')
        fact=fact*10+(s[p]-'0'),p++;
    return fact;
}

int main()
{
    ifstream fin("evaluare.in");
    ofstream fout("evaluare.out");
    fin.getline(s,DIM);
    len=strlen(s);
    fout<<eval();
    return 0;
}