Pagini recente » Cod sursa (job #1312537) | Cod sursa (job #2157357) | Cod sursa (job #2770055) | Cod sursa (job #2972463) | Cod sursa (job #3209516)
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int i = 0;
char a[100005];
int eval();
int termen();
int factor();
int eval()
{
int rez = termen();
while(a[i] == '-' || a[i] == '+')
if(a[i ++] == '+')
rez += termen();
else
rez -= termen();
return rez;
}
int termen()
{
int rez = factor();
while(a[i] == '/' || a[i] == '*')
if(a[i ++] == '*')
rez *= factor();
else
rez /= factor();
return rez;
}
int factor()
{
int rez = 0;
if(a[i] == '(')
i ++, rez = eval(), i ++;
else
while(a[i] >= '0' && a[i] <= '9')
rez = rez * 10 + (a[i ++] - '0');
return rez;
}
int main()
{
f >> a;
g << eval();
return 0;
}