Pagini recente » Cod sursa (job #3223393) | Cod sursa (job #1100498) | Cod sursa (job #2799939) | Cod sursa (job #1059993) | Cod sursa (job #1635457)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char C[100002];
int x=0;
int eval();
int termen();
int factor();
int to_int(){
int r=0;
while(isdigit(C[x])){
r*=10;
r+=C[x]-'0';
x++;
}
return r;
}
int eval(){
int r=termen();
while(C[x]=='+'||C[x]=='-'){
if(C[x]=='+'){
x++;
r+=termen();
}
else if(C[x]=='-'){
x++;
r-=termen();
}
}
return r;
}
int termen(){
int r=factor();
while(C[x]=='*'||C[x]=='/'){
if(C[x]=='*'){
x++;
r*=factor();
}
else if(C[x]=='/'){
x++;
r/=factor();
}
}
return r;
}
int factor(){
int r=0;
if(C[x]=='('){
x++; /// se sare )
r=eval();
x++; /// se sare )
}
else{
r=to_int();
}
return r;
}
int main(){
int rez=0;
int semn;
in>>C;
out<<eval();
return 0;
}