Cod sursa(job #1497819)

Utilizator Julian.FMI Caluian Iulian Julian. Data 7 octombrie 2015 15:19:11
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <string.h>
#define nmax 100000000

using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
long i,lg;
char s[100009];

long expresie();

long evaluare()
{
    long a=0;

    while(s[i]<='9' && s[i]>='0' && i<lg)
        {a=a*10+s[i]-'0';i++;}

    return a;
}

long factor()
{long rez;
if(s[i]=='(')
{i++;
rez=expresie();
i++;return rez;
}

rez=evaluare();

return rez;
}

long termen()
{long rez=factor();
while(i<lg && (s[i]=='*' || s[i]=='/'))
    if(s[i]=='*')
         {i++;rez*=termen();}
    else {i++;rez/=termen();}
return rez;
}

long expresie()
{long rez=termen();
while(i<lg && (s[i]=='+' || s[i]=='-'))
    if(s[i]=='+')
         {i++;rez+=termen();}
    else {i++;rez-=termen();}
return rez;
}


int main()
{
    fin.getline(s,100009);
    lg=strlen(s);
    fout<<expresie();
}