Pagini recente » Cod sursa (job #3335284) | Cod sursa (job #3335165) | Cod sursa (job #3330430) | Cod sursa (job #3335164) | Cod sursa (job #3342565)
#include <iostream>
#include <fstream>
using namespace std;
char S[100010];
char *p=S;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
long int termen();
long int factor();
long int eval(){
long r=termen();
while(*p=='+' || *p=='-'){
switch(*p){
case '+':
p++;
r +=termen();
break;
case '-':
p++;
r-=termen();
break;
}
}
return r;
}
long int termen(){
long r=factor();
while(*p=='*'|| *p =='/'){
switch(*p){
case '*':
p++;
r*=factor();
break;
case '/':
p++;
r/=factor();
break;
}
}
return r;
}
long int factor(){
long r=0;
if (*p=='('){
p++;
r=eval();
p++;
}
else{
while(*p>='0' && *p<='9'){
r=r*10+(*p-'0');
p++;
}
}
return r;
}
int main()
{
in.getline(S,10001);
out<<eval();
return 0;
}