Cod sursa(job #1638294)

Utilizator marcdariaDaria Marc marcdaria Data 7 martie 2016 22:22:25
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <fstream>
#include <string.h>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

string s;
int i=0;

long long calc_expr();

long long calc_factor()
{
    long long ans=0;
    if(s[i]=='(')
       {
           ++i;
           ans=calc_expr();
           ++i;
       }
       else
       {
           while(s[i]>='0' && s[i]<='9')
           {
               ans=ans*10+(s[i]-'0');
               ++i;
           }
       }
    return ans;
}

long long calc_term()
{
    long long f1=calc_factor();
    long long ans=f1;
    while(s[i]=='*' || s[i]=='/')
    {
        if(s[i]=='*')
        {
            ++i;
            ans*=calc_factor();
        }
        if(s[i]=='/')
        {
            ++i;
            ans/=calc_factor();
        }
    }
    return ans;
}

long long calc_expr()
{
    long long t1=calc_term();
    long long ans=t1;
    while(s[i]=='+' || s[i]=='-')
    {
        if(s[i]=='+')
        {
            ++i;
            ans+=calc_term();
        }
        if(s[i]=='-')
        {
            ++i;
            ans-=calc_term();
        }
    }
    return ans;
}

int main()
{
    fin>>s;
    fout<<calc_expr();
    return 0;
}