Pagini recente » Cod sursa (job #1816546) | Cod sursa (job #1058943) | Cod sursa (job #2777860) | Cod sursa (job #1099565) | Cod sursa (job #1134905)
// Infoarena. Arhiva Educationala.
// Evaluarea Expresiilor.
#include<iostream>
#include<fstream>
using namespace std;
char E[100005],*p=E;
int evalueaza();
int termen();
int factor();
int main(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
cin>>E;
cout<<evalueaza();
}
int evalueaza(){
int r=termen();
while(*p=='+' || *p=='-'){
switch(*p){
case('+'): ++p;
r+=termen();
break;
case('-'): ++p;
r-=termen();
break;
}
}
return r;
}
int termen(){
int r=factor();
while(*p=='*' || *p=='/'){
switch(*p){
case('*'): ++p;
r*=factor();
break;
case('/'): ++p;
r/=factor();
break;
}
}
return r;
}
int factor(){
int r=0;
if(*p=='('){
++p;
r=evalueaza();
++p;
}else{
while(*p>='0' && *p<='9'){
r=10*r+(*p)-'0';
++p;
}
}
return r;
}