Pagini recente » Cod sursa (job #167441) | Cod sursa (job #2654603) | Cod sursa (job #139264) | Cod sursa (job #1124351) | Cod sursa (job #3134867)
#include<bits/stdc++.h>
using namespace std;
int i;
string s;
int constanta();
int factor();
int expresie();
int termen();
int constanta()
{
int ans = 0;
while ( s[i] >= '0' && s[i] <= '9' )
{
ans = ans * 10 + (s[i] - '0');
i++;
}
return ans;
}
int termen()
{
int ans = factor();
while ( s[i] == '*' || s[i] == '/' )
{
if ( s[i] == '*' )
{
i++;
ans *= factor();
}
else
{
i++;
ans /= factor();
}
}
return ans;
}
int factor()
{
int ans;
if ( s[i] == '(' )
{
i++;
ans = expresie();
i++;
}
else
{
ans = constanta();
}
return ans;
}
int expresie()
{
int ans = termen();
while ( s[i] == '+' || s[i] == '-' )
{
if ( s[i] == '+' )
{
i++;
ans += termen();
}
else
{
i++;
ans -= termen();
}
}
return ans;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
cin>>s;
i = 0;
cout<<expresie();
}