Pagini recente » Cod sursa (job #1037431) | Cod sursa (job #1516429) | Cod sursa (job #1813270) | Cod sursa (job #2552705) | Cod sursa (job #3235132)
#include <bits/stdc++.h>
using namespace std;
char s[100001];
int i, n;
int expresie();
int termen();
int factor();
int constanta();
int expresie()
{
int ans = termen();
while (i < n && s[i] == '+' || s[i] == '-')
{
if (s[i] == '+')
{
++i;
ans += termen();
}
else
{
++i;
ans -= termen();
}
}
return ans;
}
int termen()
{
int ans = factor();
while (i < n && s[i] == '*' || s[i] == '/')
{
if (s[i] == '*')
{
++i;
ans *= factor();
}
else
{
++i;
ans /= factor();
}
}
return ans;
}
int factor()
{
int r;
if (s[i] == '(')
{
++i;
r += expresie();
++i;
}
else
r = constanta();
return r;
}
int constanta()
{
int number = 0;
while (i < n && isdigit(s[i]))
{
number = number * 10 + s[i] - '0';
++i;
}
return number;
}
int main()
{
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin >> s;
n = strlen(s);
cout << expresie();
return 0;
}