Pagini recente » Cod sursa (job #2177053) | Cod sursa (job #446941) | Cod sursa (job #1245418) | Cod sursa (job #529499) | Cod sursa (job #874915)
Cod sursa(job #874915)
#include<fstream>
//#include<string.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100010];
int p;
int termen();
int factor();
int expresie(){
int sum = termen();
while(s[p]=='+' || s[p]=='-'){
if(s[p] == '+'){
p++;
sum+= termen();
}
else{
p++;
sum-= termen();
}
}
return sum;
}
int termen(){
int prod = factor();
while(s[p]=='*' || s[p]=='/'){
if(s[p] == '*'){
p++;
prod*= factor();
}
else{
p++;
prod/= factor();
}
}
return prod;
}
int factor(){
int val=0, semn=1;
while(s[p] == '-'){
semn = -semn;
p++;
}
if(s[p] == '('){
p++;
val = expresie();
p++;
return semn*val;
}
while(s[p]>47 && s[p]<58){
val = val*10 + s[p] - 48;
p++;
}
return semn*val;
}
int main(){
fin.getline(s, 100010);
fout << expresie();
fin.close();
fout.close();
return 0;
}