Pagini recente » Cod sursa (job #729848) | Cod sursa (job #2637797) | Cod sursa (job #757717) | Cod sursa (job #1421021) | Cod sursa (job #3243919)
#include <bits/stdc++.h>
#define NN 100005
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
string s;
int i;
int expresie();
int termen();
int fact();
int expresie()
{
int val = termen();
while(s[i] == '+' || s[i] == '-')
{
i++;
if(s[i-1] == '+')
val += termen();
else
val -= termen();
}
return val;
}
int termen()
{
int val = fact();
while(s[i] == '*' || s[i] == '/')
{
i++;
if(s[i-1] == '*')
val *= fact();
else
val /= fact();
}
return val;
}
int fact()
{
int val = 0;
int semn = 1;
while(s[i] == '-')
{
i++;
semn *= (-1);
}
if(s[i] == '(')
{
i++;
val = expresie();
i++;
return val;
}
while(s[i] >= '0' && s[i] <= '9')
{
val = val * 10 + s[i] - '0';
i++;
}
return val;
}
int main()
{
fin >> s;
fout << expresie();
return 0;
}