Cod sursa(job #1722568)

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

char s[DIM];
int p,len;

long long int getTerm();
long long int getFact();

long long int eval() {
    long long int ans=getTerm();
    while(s[p]=='+'||s[p]=='-')
        p++,ans+=getTerm();
    p++;
    return ans;
}

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

long long int getFact() {
    if(s[p]=='(') {
        p++;
        return eval();
    }
    long long 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;
}