Pagini recente » Istoria paginii utilizator/tudorgalatan | Profil Sagunistu | Cod sursa (job #266976) | Profil usureluflorian | Cod sursa (job #1820189)
#include <fstream>
#include <cstdlib>
#include <cstring>
using namespace std;
ifstream h("evaluare.in");
ofstream g("evaluare.out");
char p[100005];
int j=0,n;
long t();
long f();
long e() {
long r = t();
while ( p[j]=='+' || p[j]=='-' ) {
switch ( p[j] ) {
case '+':
j++;
r += t();
break;
case '-':
j++;
r -= t();
break;
}
}
return r;
}
long t() {
long r = f();
while ( p[j]=='*' || p[j]=='/' ) {
switch ( p[j] ) {
case '*' :
j++;
r *= f();
break;
case '/':
j++;
r /= f();
break;
}
}
return r;
}
long f() {
long r=0;
if ( p[j] == '(' ) {
j++;
r = e();
j++;
} else {
while (j<=n&& isdigit(p[j]) ) {
r = r*10 + p[j] - '0';
j++;
}
}
return r;
}
int main() {
h.getline(p,100004);
n=strlen(p);
g<<e();
return 0;
}