foarte frumoasa sursa facuta de Lucian Boca

LE:
intrebare:
y = eval( x, expr(lev+1), *p++ );
programul intra in
expr(lev+1) dupa ce ii trimite *p ca parametru lui eval (p ca parametru nu este incrementat si ca pointer (global) este incrementat)
sau
expr(lev+1) dupa ce ii trimite *p ca parametru lui eval (p ca parametru nu este incrementat si nici ca variabila)
sau
expr(lev+1) inainte sa ii trimita *p ca parametru lui eval (deci p global nu este incrementat)
multumesc anticipat, sunt nou in ale pointerilor
LE2: mda nu imi dau seama deloc!... am facut niste surse in care sa testez si mai mult m am incurcat
LE3:
int expr( int lev ){
char S[NN],*p=S,op[2][3]={"+-","*/"};
int eval( int a,int b, char op ){
switch ( op ) {
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;
}
pe linia unde y = eval(..) intra in expr fara ca *p sa fie incrementat. astfel in caz ca este semn si paranteza ex (...+(...) *p indica tot + si intra in eval unde ajunge dupa inca doua autochemari sa fie *p diferit de paranteza si sa intre in forul in care se creaza x dar acolo *p e diferit de [0,..,9] (pt ca a ramas la +) si x ramane cu val 0 dupa care iese din toate si se termina programu fara sa termine de evaluat toata expresia
http://infoarena.ro/job_detail/479037?action=view-sourceLE4: pentru testul 2
"(296+(286+891+(82+179+358-(48)*(0/173))-(251)))"
programu meu returneaza 296, am mers cu debugu si am gasit problema (am scris mai sus) si nu stiu cum sa o rezolv...
si mai ciudat e ca imi da acelasi rezultat gresit si pe celalate surse care folosesc metoda recursiva. insa cand le trimit numai a mea e gresita...
si tot la solutiile care folosesc recursivitate (copiate din solutiile oficiale) primesc acest warring "evaluare.cpp:33: warning: control reaches end of non-void function" / are vreo legatura?
help va rog !