Pagini recente » Cod sursa (job #2628176) | Cod sursa (job #2110311) | Cod sursa (job #792635) | Cod sursa (job #2933795) | Cod sursa (job #1928475)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string str;
int poz, len;
int termen();
int factor();
int eval()
{
int ans = termen();
while (poz < len && (str[poz] == '+' || str[poz] == '-'))
{
if (str[poz] == '+')
{
++poz;
ans += termen();
}
else
{
++poz;
ans -= termen();
}
}
return ans;
}
int termen()
{
int ans = factor();
while (poz < len && (str[poz] == '*' || str[poz] == '/'))
{
if (str[poz] == '*')
{
++poz;
ans *= factor();
}
else
{
++poz;
ans /= factor();
}
}
return ans;
}
int factor()
{
int ans = 0;
if (poz < len && str[poz] == '(')
{
++poz;
ans = eval();
++poz;
}
else
{
while (poz < len && isdigit(str[poz]))
{
ans *= 10;
ans += (str[poz] - '0');
++poz;
}
}
return ans;
}
int main()
{
fin >> str;
len = str.size();
fout << eval();
}