Pagini recente » Cod sursa (job #478691) | Cod sursa (job #527230) | Cod sursa (job #2369603) | Cod sursa (job #3036453) | Cod sursa (job #1081623)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
char op[3][3] {"+-","*/",""};
char s[100005];
char *p;
int opf(int x1,int x2,char o)
{
switch (o)
{
case '+':return x1+x2;
case '-':return x1-x2;
case '/':return x1/x2;
case '*':return x1*x2;
}
}
int eval(int lvl)
{
int x,y;
char ch;
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)
{
ch=*p;
p++;
y=opf(x,eval(lvl+1),ch);
}
return x;
}
int main(void)
{
FILE * f;
f=fopen("evaluare.in","r");
fgets(s,100005,f);
p=s;
ofstream g("evaluare.out");
g<<eval(0);
return 0;
}