Cod sursa(job #1864482)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 31 ianuarie 2017 19:57:40
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100011];
int i;
long long termen(void);
long long factor(void);
long long eval()
{
    long long sum=termen();
    while(s[i]=='+' or s[i]=='-')
    {
        if(s[i]=='+')
        {i++; sum+=termen();}
        else {i++; sum-=termen();}
    }
    return sum;
}
long long termen()
{
    long long sum=factor();
    while(s[i]=='*' or s[i]=='/')
    {
        if(s[i]=='*')
        {i++; sum*=factor();}
        else {i++; sum/=factor();}
    }
    return sum;
}
long long factor()
{
    long long sum=0;
    if(s[i]=='(')
       {
           i++;
           sum=eval();
           i++;
       }
    else
    {while(isdigit(s[i]))
        {
            sum=sum*10+s[i]-'0';
            i++;
        }}
    return sum;
}
int main()
{f.getline(s,100011);
long long sum=eval();
g<<sum;

    return 0;
}