Cod sursa(job #1910802)

Utilizator mariastStoichitescu Maria mariast Data 7 martie 2017 18:21:46
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
using namespace std;
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
int i=0;
char s[100001];
int eval();
int termen();
int fact();
int eval(){
    int r=termen();
    while(s[i]=='+'||s[i]=='-'){
        if(s[i]=='+'){
            i++,r=r+termen();
        }
        else i++,r=r-termen();
    }
    return r;
}
int termen(){
    int r=fact();
    while(s[i]=='*'||s[i]=='/'){
        if(s[i]=='*'){
            i++;
            r=r*fact();
        }
        else i++,r=r/fact();
    }
    return r;
}
int fact(){
    int r=0;
    if(s[i]=='('){
        ++i,r=eval(),++i;
    }
    while(s[i]<='9'&&s[i]>='0'){
        r=r*10+s[i]-'0',++i;
    }
    return r;
}
int main()
{
    f.getline(s,100001);
    i=0;
    g<<eval();
}