Pagini recente » Cod sursa (job #389897) | Cod sursa (job #2942525) | Cod sursa (job #894959) | Cod sursa (job #2553052) | Cod sursa (job #2352157)
#include <fstream>
#include <cstring>
using namespace std;
const int NMAX = 100005;
int n;
char s[NMAX];
int expresie(), factor(), termen();
int p;
int expresie()
{
int x = termen();
while (p <= n && (s[p] == '+' || s[p] == '-'))
{
++p;
if (s[p - 1] == '+')
x += termen();
else
x -= termen();
}
return x;
}
int termen()
{
int x = factor();
while (p <= n && (s[p] == '*' || s[p] == '/'))
{
++p;
if (s[p - 1] == '*')
x *= factor();
else
x /= factor();
}
return x;
}
int factor()
{
int x = 0;
if (s[p] == '(')
{
++p;
x = expresie();
++p;
}
else
{
while (p <= n && ('0' <= s[p] && s[p] <= '9'))
{
x = x * 10 + (s[p] - '0');
++p;
}
}
return x;
}
int main()
{
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
fin >> (s + 1);
n = strlen(s + 1);
p = 1;
fout << expresie() << "\n";
fin.close();
fout.close();
return 0;
}