Pagini recente » Cod sursa (job #1579603) | Cod sursa (job #422886) | Cod sursa (job #3227995) | Cod sursa (job #317137) | Cod sursa (job #2365542)
#include <bits/stdc++.h>
#define Nmax 100005
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char C[Nmax];
int idx = 0;
int expresie();
int factor()
{
if(C[idx] == '(')
return expresie();
int ret = 0;
while(C[idx] >= '0' && C[idx] <= '9')
ret = ret * 10 + C[idx++] - '0';
return ret;
}
int termen()
{
int ret = factor();
while(C[idx] == '*' || C[idx] == '/')
{
if(C[idx] == '*')
{
idx++;
ret *= factor();
}
else
{
idx++;
ret /= factor();
}
}
return ret;
}
int expresie()
{
idx++;
int ret = termen();
while(C[idx] != ')')
{
if(C[idx] == '+')
{
idx++;
ret += termen();
}
else
{
idx++;
ret -= termen();
}
}
idx++;
return ret;
}
int main()
{
fin >> (C + 1);
C[0] = '(';
C[strlen(C)] = ')';
fout << expresie() << "\n";
return 0;
}