Pagini recente » Monitorul de evaluare | Borderou de evaluare (job #3319887) | Borderou de evaluare (job #2675266) | Monitorul de evaluare | Cod sursa (job #3346601)
#include <bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string s;
int i=0;
long long termen();
long long expresie();
long long factor();
long long constanta();
long long expresie() {
long long r=0;
r=termen();
while (s[i]=='+' || s[i]=='-') {
if (s[i]=='+') {
i++;
r+=termen();
}
else {
i++;
r-=termen();
}
}
return r;
}
long long termen() {
long long r=0;
r=factor();
while (s[i]=='*' || s[i]=='/') {
if (s[i]=='*') {
i++;
r*=factor();
}
else {
i++;
r/=factor();
}
}
return r;
}
long long factor() {
long long r=0;
if (s[i]=='(') {
i++;
r+=expresie();
i++;
}
else {
r+=constanta();
}
return r;
}
long long constanta() {
long long r=0;
while (s[i]-'0'<10 && s[i]-'0'>=0) {
r=r*10+s[i]-'0';
i++;
}
return r;
}
int main(){
in>>s;
out<<expresie();
return 0;
}