Cod sursa(job #1809420)

Utilizator Sergiu1256Ionita Sergiu1256 Data 18 noiembrie 2016 22:10:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include<bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100001],*p=s;
inline long long termen();
inline long long factor();
inline long long eval(){
    long long aux=termen();
    while(*p<=100001 && (*p =='+'||*p=='-'))
        switch (*p){
            case '+':{++p;
                      aux+=termen ();
                      break;}
            case '-':{++p; 
                      aux-=termen ();
                      break;}
        }
    return aux;
}
inline long long termen (){
    long long aux=factor();
    while(*p<=100001 && (*p=='*' || *p=='/'))
        switch (*p){
            case '*':{
					++p;
                    aux*=factor ();
                    break;
					}
            case '/':{
					++p;
                    aux/=factor ();
                    break;
					}
        }
    return aux;
} 
inline long long factor(){
    long long aux=0;
    if (*p=='('){
        ++p;
        aux=eval();
        ++p;
    }
    else;
        while(*p>='0' && *p<='9'){
            aux=aux*10+*p-'0';
            ++p;
        }
    return aux;
}
int main(){
	ios::sync_with_stdio(false);
	fin.tie(0);
	fin.getline(s,100001);
	fout<<eval();	
	return 0;	
}