Cod sursa(job #1340044)

Utilizator sicsicFMI-Coteanu Vlad sicsic Data 11 februarie 2015 14:37:02
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
#include<string.h>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char e[100001];
int n,i;
int eval();
int factor();
int termen();
int exp();
int eval()
{
    int f=0;
    f=e[i]-'0';
    while(e[i+1]>='0'&&e[i+1]<='9')
    {
        i++; f=f*10+(e[i]-'0');
    }
    return f;
}
int factor()
{
    int f;
    if(e[i]=='(')
    {
        i++;
        f=exp();
        i++;
    }
    else { f=eval();
           i++;
         }
    return f;
}
int termen()
{
    int f=factor();
    while(i<n&&(e[i]=='*'||e[i]=='/'))
        if(e[i]=='*') i++, f*=factor();
        else i++,f/=factor();
    return f;
}
int exp()
{
    int f;
    if(e[i]=='-') i++, f=-termen();
    else f=termen();
    while(i<n&&(e[i]=='-'||e[i]=='+'))
        if(e[i]=='+') i++, f+=termen();
        else i++,f-=termen();
    return f;
}
void citire()
{
    f.get(e,100001);
    n=strlen(e);
}
int main()
{
    citire();
    i=0;
    g<<exp()<<'\n';
    return 0;
}