Pagini recente » Cod sursa (job #1912595) | Cod sursa (job #1709616) | Cod sursa (job #1212339) | Cod sursa (job #935894) | Cod sursa (job #3245841)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int factor();
int termen();
string expresie;
int ptr;
int evaluare(){
int R = termen();
while (expresie[ptr] == '-' or expresie[ptr] == '+'){
if(expresie[ptr] == '-'){
++ptr;
R -= termen();
}
else{
if(expresie[ptr] == '+'){
++ptr;
R += termen();
}
}
}
return R;
}
int termen(){
int R = factor();
while (expresie[ptr] == '*' or expresie[ptr] == '/'){
if(expresie[ptr] == '*'){
++ptr;
R *= factor();
}
else{
if(expresie[ptr] == '/'){
++ptr;
R /= factor();
}
}
}
return R;
}
int factor(){
int64_t R = 0;
if(expresie[ptr] == '('){
++ptr;
R = evaluare();
++ptr;
}
else{
while(isdigit(expresie[ptr])){
R = R * 10 + (expresie[ptr] - '0');
++ptr;
}
}
return R;
}
int main(){
fin >> expresie;
expresie += '$';
fout << evaluare();
}