Cod sursa(job #1089023)

Utilizator httpsLup Vasile https Data 21 ianuarie 2014 09:32:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

char s[100000];
int i;
int termen();
int factor();
int eval()
{
    int r=termen();
    while (s[i]=='+' || s[i]=='-')
    {
        switch (s[i])
         {
             case '+':++i,r+=termen();break;
             case '-':++i,r-=termen();break;
         }
    }
    return r;
}
int termen()
{
    int r=factor();
    while (s[i]=='*' || s[i]=='/')
    {
        switch (s[i])
         {
             case '*':++i,r*=factor();break;
             case '/':++i,r/=factor();break;
         }
    }
    return r;

}
int factor()
{
    int r=0;
    if (s[i]=='(')
        {
            ++i;
            r=eval();
            ++i;
        }
    else while(s[i]>='0' && s[i]<='9')
            {
                r=r*10+s[i]-'0';
                ++i;
            }
            return r;
}
int main()
{
    f>>s;
    g<<eval();
    return 0;
}