Cod sursa(job #2070400)

Utilizator ionandrei2001Ion Andrei Valentin ionandrei2001 Data 19 noiembrie 2017 15:23:53
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
char s[100002];
int f1();
int f2();
int f3();
int i=0;

int main () {
    ifstream in ("evaluare.in");
    ofstream out ("evaluare.out");
    in.get(s,100001);
    out << f1();
}

int f1() {
    int r;
    r=f2();
    while(s[i]=='+' || s[i]== '-') {
        if(s[i]=='+') {
            i++;
            int a=f2();
            r+=a;
        }
        else {
            i++;
            int a=f2();
            r-=a;
        }
    }
    return r;
}

int f2() {
    int r;
    r=f3();
    while(s[i]=='*' || s[i]=='/' || s[i]=='%') {
        if(s[i]=='*') {
            i++;
            int a=f3();
            r*=a;
        }
        if(s[i]=='/') {
            i++;
            int a=f3();
            r/=a;
        }
        if(s[i]=='%') {
            i++;
            int a=f3();
            r%=a;
        }
    }
    return r;
}

int f3() {
    int r=0;
    if(s[i]=='(') {
        i++;
        r=f1();
        i++;
    }
    else {
        for(;s[i]>='0' && s[i]<='9'; i++) {
            r=r*10+(s[i]-'0');
        }
    }
    return r;
}