Cod sursa(job #1809417)

Utilizator Sergiu1256Ionita Sergiu1256 Data 18 noiembrie 2016 22:05:50
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include<bits/stdc++.h>
using namespace std;
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(){
	ifstream fin("evaluare.in");
	ofstream fout("evaluare.out");
	ios::sync_with_stdio(false);
	fin.tie(0);
	fin.getline(s,100001);
	fout<<eval();	
	return 0;	
}