Cod sursa(job #332860)
#include <fstream>
#include <string>
using namespace std;
string a;
int i;
long eval();
long factor() {
if (a[i]=='(')
{
i++;
return eval();
}
long r=0;
while (a[i]>='0'&&a[i]<='9')
{
r=r*10+(a[i]-'0');
i++;
}
return r;
}
long termen() {
long r=factor();
while (a[i]=='*'||a[i]=='/')
switch (a[i])
{
case '*':
{
i++;
r*=factor();
}
break;
case '/':
{
i++;
r/=factor();
}
break;
}
return r;
}
long eval() {
long r = termen();
while (a[i]=='+'||a[i]=='-')
switch (a[i])
{
case '+': {i++; r+=termen(); }
break;
case '-': { i++; r-=termen(); }
break;
}
if (a[i]==')') i++;
return r;
}
int main () {
ifstream in;
ofstream out;
in.open("evaluare.in");
out.open("evaluare.out");
in >> a;
in.close();
long r = eval();
out << r;
out.close();
return 0;
}