Pagini recente » Cod sursa (job #229668) | Cod sursa (job #41296) | Cod sursa (job #3273739) | Cod sursa (job #3266436) | Cod sursa (job #1452126)
#include <cctype>
#include <fstream>
#include <string>
using namespace std;
string str,r;
int t;
int expresie();
int factor();
int termen();
int eval(void){
int f=0;
do{
f=f*10+str[t]-'0';
} while(isdigit(str[++t]));
return f;
}
int expresie(void){
int f=factor();
while(t<str.size()){
if(str[t]=='+'){
++t;
f+=termen();
}
else if(str[t]=='-'){
++t;
f-=termen();
}
else{
break;
}
}
return f;
}
int factor(void){
int f;
if(str[t]=='('){
++t;
f=expresie();
}
else
f=eval();
return f;
}
int termen(void){
int f=factor();
while(t<str.size()){
if(str[t]=='*'){
++t;
f*=factor();
}
else if(str[t]=='/'){
++t;
f/=factor();
}
else{
break;
}
}
return f;
}
ifstream finn("evaluare.in");
ofstream jake("evaluare.out");
int main(void){
getline(finn,str);
jake<<expresie();
return 0;
}