Pagini recente » Cod sursa (job #2195083) | Cod sursa (job #1921678) | Cod sursa (job #2140483) | Cod sursa (job #1962560) | Cod sursa (job #1497719)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int NMax = 1e5 + 5;
char C[NMax], *p = C;
int Eval();
int Termen();
int Factor();
int Eval(){
int k;
int res = Termen();
while(*p == '+' || *p == '-'){
if(*p == '+'){
p++;
k = Termen();
res += k;
}
if(*p == '-'){
p++;
k = Termen();
res -= k;
}
}
return res;
}
int Termen(){
int k;
int res = Factor();
while(*p == '*' || *p == '/'){
if(*p == '*'){
p++;
k = Termen();
res *= k;
}
if(*p == '/'){
p++;
k = Termen();
res /= k;
}
}
return res;
}
int Factor(){
int res = 0;
if(*p == '('){
p++;
res = Eval();
p++;
} else {
while(isdigit(*p)){
res = res * 10 + (*p - '0');
p++;
}
}
return res;
}
int main(){
fin >> C;
fout << Eval();
return 0;
}