Pagini recente » Cod sursa (job #883880) | Cod sursa (job #3261194) | Cod sursa (job #2411727) | Cod sursa (job #357169) | Cod sursa (job #527394)
Cod sursa(job #527394)
#include <iostream>
#include <fstream>
#include <math.h>
#define LMAX 100010
using namespace std;
int i;
char e[LMAX];
long termen();
long factor();
long eval()
{
long r=termen();
while(e[i]=='+'||e[i]=='-')
{
switch(e[i])
{
case '+':
i++;
r=r+termen();
break;
case '-':
i++;
r=r-termen();
break;
}
}
return r;
}
long termen()
{
long r=factor();
while(e[i]=='*'||e[i]=='/')
{
switch(e[i])
{
case '*':
i++;
r=r*factor();
break;
case '/':
i++;
r=r/factor();
break;
}
}
return r;
}
long factor()
{
long r=0;
if(e[i]=='(')
{
i++;
r=eval();
i++;
}
else
{
r=atol(&e[i]);
if(r) i=i+log10(r)+1;
else i++;
}
return r;
}
int main()
{
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f>>e;
g<<eval()<<"\n";
return 0;
}