Pagini recente » Cod sursa (job #1964805) | Cod sursa (job #3156471) | Cod sursa (job #2749091) | Cod sursa (job #19666) | Cod sursa (job #2812571)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100005];
int k;
int Termen();
int Factor();
int Eval()
{
int r = Termen();
while (s[k]=='+' or s[k]=='-')
switch (s[k])
{
case '+': k++; r += Termen(); break;
case '-': k++; r -= Termen(); break;
}
return r;
}
int Termen()
{
int r = Factor();
while (s[k]=='*' or s[k]=='/')
switch (s[k])
{
case '*': k++; r *= Factor(); break;
case '/': k++; r /= Factor(); break;
}
return r;
}
int Factor()
{
int r = 0;
if (s[k] == '(')
{
k++;
r = Eval();
k++;
}
else
{
while (isdigit(s[k]))
{
r = r * 10 + s[k] - '0';
k++;
}
}
return r;
}
int main()
{
fin >> s;
fout << Eval();
return 0;
}