Pagini recente » Cod sursa (job #1923150) | Cod sursa (job #626705) | Cod sursa (job #313882) | Cod sursa (job #899706) | Cod sursa (job #2200136)
#include <fstream>
#include <vector>
#include <cstdlib>
#include <string>
#include <cstring>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
#define max 100050
char in[max]={0};
char *p=in;
int eval();
int termen();
int factor();
int main(){
cin>>in;
int r=eval();
cout<<r;
return 0;
}
int eval(){
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=eval();
++p;
}else{
while(*p>='0'&&*p<='9'){
r = r*10 + *p-'0';
++p;
}
}
return r;
}