Pagini recente » Cod sursa (job #90353) | Cod sursa (job #2893980) | Cod sursa (job #2281024) | Cod sursa (job #840487) | Cod sursa (job #653573)
Cod sursa(job #653573)
#include <cstring>
#include<fstream>
#define LMAX 2
#define NMAX 100010
using namespace std;
ifstream f("evaluare.in",fstream::in);
ofstream g("evaluare.out",fstream::out);
//char op[4][4] = { "+-", "*/", "^", "" };
char op[4][4] ={ "+-","*/","^",""};
char S[NMAX], *p = S;
int eval( int a, int b, char o ) {
switch( o ) {
case '+': return a+b;
case '-': return a-b;
case '*': return a*b;
case '/': return a/b;
}
}
int expr( int lev ) {
int x, y;
if(lev ==LMAX)
if(*p == '(')
++p,x=expr(0),++p;
else
for(x =0;*p >='0'&&*p<= '9';++p )
x=x*10+*p-'0';
else
for(x=expr(lev+1);strchr(op[lev],*p);x=y)
y=eval(x,expr(lev+1),*p++);
return x;
}
int main() {
f.get(S,NMAX);
S[strlen(S)]='\n';
g<<expr(0);
return 0;
}