Pagini recente » Cod sursa (job #2262772) | Cod sursa (job #1800635) | Cod sursa (job #3222332) | Cod sursa (job #262980) | Cod sursa (job #2905812)
///expresie = term + term;
///term = fact * fact;
///fact = numar || expresie
#include <fstream>
#include <string>
#define int long long
using namespace std;
ifstream cin ("evaluare.in");
ofstream cout ("evaluare.out");
int i;
int term();
int fact();
string s;
int expresie ()
{
int numar = term();
if (s[i] == '+' || s[i] == '-')
{
if (s[i] == '+')
++i, numar += term();
else
++i, numar -= term();
}
return numar;
}
int term()
{
int numar = fact();
if (s[i] == '/' || s[i] == '*')
{
if (s[i] == '/')
++i, numar /= fact();
else
++i, numar *= fact();
}
return numar;
}
int fact()
{
int numar = 0;
if (s[i] == '(')
{
++i;
numar = expresie();
++i;
}
else
{
while (isdigit(s[i]))
numar *= 10, numar += s[i] - '0', ++i;
}
return numar;
}
signed main()
{
cin >> s;
cout << expresie() << '\n';
return 0;
}