Pagini recente » Cod sursa (job #2468659) | Cod sursa (job #2793716) | Cod sursa (job #2795119) | Cod sursa (job #2635475) | Cod sursa (job #3276702)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100001];
int i;
int expresie();
int termen();
int factor();
int expresie()
{
int sum=termen();
while (s[i] == '+' || s[i] == '-')
{
if (s[i] == '+')
{
i++;
sum+=termen();
}
else
{
i++;
sum-=termen();
}
}
return sum;
}
int termen()
{
int prod = factor();
while (s[i] == '*' || s[i] == '/')
{
if (s[i] == '*')
{
i++;
prod *= factor();
}
else
{
i++;
prod /= factor();
}
}
return prod;
}
int factor()
{
int val = 0, semn = 1;
while (s[i] == '-')
{
semn = -semn;
i++;
}
if (s[i] == '(')
{
i++;
val=expresie();
i++;
return semn*val;
}
while ('0'<=s[i]&&s[i]<='9')
{
val=val*10+(s[i]-'0');
i++;
}
return semn*val;
}
int main()
{
fin >> s;
fout<<expresie()<< "\n";
return 0;
}