Cod sursa(job #881237)

Utilizator alex.glontGlontaru Alexandru alex.glont Data 17 februarie 2013 20:23:02
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

fstream in("evaluare.in",ios::in),
        out("evaluare.out",ios::out);
string expresie;
int i;

int numar();
int factor();
int termen();

int main(){
    in>>expresie;
    out<<termen();
    return 0;
}

int numar(){
    int x=0;
    if(expresie[i]=='('){
        ++i;
        x=termen();
        ++i;
    }
    else{
        while((expresie[i]>='0'&&expresie[i]<='9')&&i<expresie.length()){
            x=x*10+(expresie[i]-'0');
            i++;
        }
    }
    return x;
}

int factor(){
    int produs=numar();
    while((expresie[i]=='*'||expresie[i]=='/')&&i<expresie.length()){
        if(expresie[i]=='*'){
            ++i;
            produs*=numar();
        }
        if(expresie[i]=='/'){
            ++i;
            produs/=numar();
        }
    }
    return produs;
}

int termen(){
    int suma=factor();
    while((expresie[i]=='+'||expresie[i]=='-')&&i<expresie.length()){
        if(expresie[i]=='+'){
            ++i;
            suma+=factor();
        }
        if(expresie[i]=='-'){
            ++i;
            suma-=factor();
        }
    }
    return suma;
}