Cod sursa(job #1907724)

Utilizator Andrei2000Andrei Mihailescu Andrei2000 Data 6 martie 2017 20:39:04
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
char *sir=new char[100002];
long long int termen();
long long int factor();

long long int eval(){
    long long r=termen();
    while(*sir=='+' || *sir =='-'){
        switch(*sir){
            case '+':
                sir++;
                r+=termen();
                break;
            case '-':
                sir++;
                r-=termen();
                break;
        }
    }
    return r;
}

long long int termen(){
    long long r=factor();
    while(*sir=='*' || *sir =='/'){
        switch(*sir){
            case '*':
                sir++;
                r*=factor();
                break;
            case '/':
                sir++;
                r/=factor();
                break;
        }
    }
    return r;
}

long long int factor(){
    long long r=0;
    if(*sir=='('){
        sir++;
        r=eval();
        sir++;
    }
    else {
        while(*sir>='0' && *sir<='9')
            r=r*10+*(sir++)-'0';
    }
    return r;
}

int main()
{
    fin.get(sir,100002);
    fout<<eval();
    return 0;
}