Cod sursa(job #1452126)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 19 iunie 2015 22:15:44
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <cctype>
#include <fstream>
#include <string>
using namespace std;

string str,r;
int t;

int expresie();
int factor();
int termen();

int eval(void){
    int f=0;
    do{
        f=f*10+str[t]-'0';
    } while(isdigit(str[++t]));
    return f;
}
int expresie(void){
    int f=factor();
    while(t<str.size()){
        if(str[t]=='+'){
            ++t;
            f+=termen();
        }
        else if(str[t]=='-'){
            ++t;
            f-=termen();
        }
        else{
            break;
        }
    }
    return f;
}
int factor(void){
    int f;
    if(str[t]=='('){
        ++t;
        f=expresie();
    }
    else
        f=eval();
    return f;
}
int termen(void){
    int f=factor();
    while(t<str.size()){
        if(str[t]=='*'){
            ++t;
            f*=factor();
        }
        else if(str[t]=='/'){
            ++t;
            f/=factor();
        }
        else{
            break;
        }
    }
    return f;
}

ifstream finn("evaluare.in");
ofstream jake("evaluare.out");

int main(void){
    getline(finn,str);
    jake<<expresie();
    return 0;
}