Pagini recente » Cod sursa (job #1482193) | Cod sursa (job #1534505) | Cod sursa (job #280426) | Cod sursa (job #1632256) | Cod sursa (job #2136832)
#include <bits/stdc++.h>
using namespace std;
string s;
string::iterator it;
int expresie();
int termen();
int factor();
int numar();
ifstream fi("evaluare.in");
ofstream fo("evaluare.out");
int expresie(){
int sum = termen();
while(*it == '+' || *it == '-')
sum += termen();
return sum;
}
int termen(){
int prod = factor();
while(*it == '*' || *it == '/'){
if(*it == '*'){
it++;
prod *= factor();
}
else{
it++;
prod /= factor();
}
}
return prod;
}
int factor(){
int val, semn = 1;
while(*it == '+' || *it == '-'){
if(*it == '-')
semn = -semn;
it++;
}
if(*it == '('){
it++;
val = expresie();
it++;
return semn * val;
}
val = numar();
return val * semn;
}
int numar(){
int val = 0;
while(isdigit(*it)){
val = val * 10 + *it - '0';
it++;
}
return val;
}
int main()
{
fi >> s;
it = s.begin();
fo << expresie();
return 0;
}