Pagini recente » Cod sursa (job #3163675) | Cod sursa (job #3162455) | Cod sursa (job #924520) | Cod sursa (job #1140987) | Cod sursa (job #1875284)
#include<fstream>
#include<cstdio>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int i = 0;
long termen();
long factor();
long evaluare(){
long result = termen();
while(s[i] == '+' or s[i] == '-')
switch (s[i]){
case '+':{
++i;
result += termen();
break;
}
case '-':{
++i;
result -= termen();
break;
}
}
return result;
}
long termen(){
long result = factor();
while(s[i] == '*' or s[i] == '/')
switch (s[i]){
case '*':{
++i;
result *= factor();
break;
}
case '/':{
++i;
result /= factor();
break;
}
}
return result;
}
long factor(){
long result = 0;
if( s[i] == '('){
++i;
result = evaluare();
++i;
}
while( s[i] >= '0' and s[i] <= '9'){
result = result*10 + s[i] - '0';
++i;
}
return result;
}
int main(){
getline(fin,s);
fout<<evaluare();
return 0;
}