El problema en el primer codigo es que en i siempre va a ser igual durante el for, por que lo incrementas solamete durante el While, pero no durante el bucle for, entonces estas siempre comparando cadux[k] con cadux[i], cuando i siempre es constante y k esta variando.
Código C++:
Ver originalwhile(i<=(j/2)&&flag==0) {
for(k=j-1;k>=(j/2);k--)
if(cadaux[i]!=cadaux[k]) /*Error: cadaux[1] != cadaux[5], cadaux[1] != cadaux[4], etc...*/
flag=1;
i++; /*Aca esta el error, estas incrementando la variable
solamente durante el while, pero en el for i siempre es igual*/
}
Yo con este código lo pude hacer andar tranquilamente, sin necesidad de usar un bucle dentro de otro.
Código C++:
Ver originali=0;
for(k=j-1;k>=(j/2);k--)
{
if(cadaux[i++]!=cadaux[k])
{
flag=1;
break;
}
}
Es una pena, por que realizaste un código muy bonito, pero no te funcionaba solamente por ese detalle mínimo.