Cod sursa(job #2115743)

Utilizator RazvanV227Virjoghe Razvan RazvanV227 Data 27 ianuarie 2018 09:38:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <fstream>
#include <cstring>

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

char s[100005];
int i=0;
long termen();
long factor();
long eval()
{
    long t=termen();
    while(s[i]=='+' || s[i]=='-')
        switch(s[i])
        {
        case '+':
        {
            i++;
            t+=termen();
            break;
        }
        case '-':
        {
            i++;
            t-=termen();
            break;
        }
        }
    return t;
}
long termen()
{
    long r=factor();
    while(s[i]=='*' || s[i]=='/')
        switch(s[i])
        {
        case '*':
        {
            i++;
            r*=factor();
            break;
        }
        case '/':
        {
            i++;
            r/=factor();
            break;
        }
        }
    return r;
}
long factor()
{
    long e=0;
    if(s[i]=='(')
    {
        i++;
        e=eval();
        i++;
    }
    else
    {
        while(s[i]>='0' && s[i]<='9')
        {
            e=e*10+ (s[i]-'0');
            i++;
        }
    }
    return e;
}



int main()
{


    f.getline(s,100005);
    g<<eval();
    return 0;
}