Pagini recente » Cod sursa (job #2088960) | Cod sursa (job #1164866) | Cod sursa (job #1387469) | Cod sursa (job #285056) | Cod sursa (job #2863766)
#include <fstream>
#include <cstring>
#define LMAX 2
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char op[4][4] = { "+-", "*/", "^", "" };
char c[100011],*p=c;
int oper(int x,int y,char o)
{
switch(o)
{
case '+':return x+y;
case '-':return x-y;
case '*':return x*y;
case '/':return x/y;
}
}
int eval(int lvl)
{
int x,y;
if(lvl==2)
{
if(*p=='(')
{
++p;
x=eval(0);
++p;
}
else
for(x=0;*p>='0' && *p<='9';++p)
x=x*10+*p-'0';
}
else
for(x=eval(lvl+1);strchr(op[lvl],*p);x=y)
y=oper(x,eval(lvl+1),*p++);
return x;
}
int main()
{
fgets(c,100011,fopen( "evaluare.in","r" ));
fprintf(fopen("evaluare.out","w"),"%d\n",eval(0));
return 0;
}