Cod sursa(job #1574108)

Utilizator roxanastRoxana Stiuca roxanast Data 20 ianuarie 2016 09:55:34
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;
char sir[100001];
int p;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int sum();
int term();
int fact();

int fact(){
    int val=0;
    if(sir[p]=='('){
        p++;
        val=sum();
        p++;
        return val;
       }
    while(sir[p]<='9'&&sir[p]>='0'){
        val=val*10+(sir[p]-'0');
        p++;
    }
    return val;
}
int term(){
    int suma=fact();
    while(sir[p]=='*'||sir[p]=='/')
    if(sir[p]=='*'){
        p++;
        suma*=fact();
    }else{
        p++;
        suma/=fact();
    }
    return suma;
}
int sum(){
    int suma=term();
    while(sir[p]=='+'||sir[p]=='-')
    if(sir[p]=='+'){
        p++;
        suma+=term();
    }else{
        p++;
        suma-=term();
    }
    return suma;
}
int main()
{
    f>>sir;
    p=0;
    g<<sum();
    return 0;
}