Pagini recente » Cod sursa (job #1770511) | Cod sursa (job #1586406) | Cod sursa (job #221741) | Cod sursa (job #405388) | Cod sursa (job #3213421)
#include <bits/stdc++.h>
using namespace std;
int n;
char s[100005];
int Termen();
int Factor();
int Eval()
{
int x = Termen();
if (s[n] == '+' or s[n] == '-')
{
switch (s[n])
{
case '+' : {n++; x += Termen(); break;}
case '-' : {n++, x -= Termen(); break;}
}
}
return x;
}
int Termen()
{
int x = Factor();
if (s[n] == '*' or s[n] == '/')
{
switch (s[n])
{
case '*' : {n++; x *= Factor(); break;}
case '/' : {n++, x /= Factor(); break;}
}
}
return x;
}
int Factor()
{
int x;
if (s[n] == '(')
{
n++;
x = Eval();
n++;
}
else
{
x = 0;
while (isdigit(s[n]))
{
x = x * 10 + s[n] - '0';
n++;
}
}
return x;
}
int main()
{
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin >> s;
cout << Eval();
return 0;
}