Pagini recente » Cod sursa (job #3159684) | Cod sursa (job #21959) | Cod sursa (job #1268722) | Cod sursa (job #3233158) | Cod sursa (job #2943851)
#include <fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
char s[100001];
int i;
int Expresie();
int Termen();
int Factor();
int Constanta();
int main()
{
cin >> s;
i = 0;
cout << Expresie();
return 0;
}
int Expresie()
{
int rez = Termen();
while (s[i] == '+' || s[i] == '-')
{
if (s[i] == '+')
i++, rez += Termen();
else
i++, rez -= Termen();
}
return rez;
}
int Termen()
{
int rez = Factor();
while (s[i] == '*' || s[i] == '/')
{
if (s[i] == '*')
i++, rez *= Factor();
else
i++, rez /= Factor();
}
return rez;
}
int Factor()
{
int rez;
if (s[i] == '(')
{
i++; // Sar peste rotunda deschisa
rez = Expresie();
i++; // Sar peste rotunda inchisa
}
else
rez = Constanta();
return rez;
}
int Constanta()
{
int rez = 0;
while (s[i] >= '0' && s[i] <= '9')
rez = rez * 10 + (s[i] - '0'), i++;
return rez;
}