Cod sursa(job #437017)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 9 aprilie 2010 08:30:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <cstring>
using namespace std;
string s;
int i;
int termen();
int factor();
int expresie(void)
{
   int sol=termen();
   while((s[i]=='+')||(s[i]=='-'))
   {
       if(s[i]=='+') { i++; sol+=termen(); }
       if(s[i]=='-') { i++; sol-=termen(); }
   }
   return sol;
}
int termen(void)
{
    int sol=factor();
    while((s[i]=='*')||(s[i]=='/'))
   {
       if(s[i]=='*') { i++; sol*=factor(); }
       if(s[i]=='/') { i++; sol/=factor(); }
   }
   return sol;
}
int factor(void)
{
    int sol=0;
    if(s[i]=='(') { i++; sol=expresie(); i++; }
    while((s[i]-48>=0)&&(s[i]-48<=9)) { sol=sol*10+s[i]-48; i++; }
    return sol;
}

ifstream fi("evaluare.in");
ofstream fo("evaluare.out");

int main()
{
    fi>>s;
    fo<<expresie();
    return 0;
}