Código C:
Ver originalfor(a=0;a<length;a++){
for(i=0;i<=contador;i++){
if(word[a]==cadena[i])
{
aux=cadena[i];
cadena[i]=cadena[contador];
cadena[contador]=aux;
contador--;
break;
}
}
}
Ahí, si no me equivoco, estás intentando dos cosas a la vez:
- Comprobar si la palabra es válida
- Desordenar sus caracteres
Al final no estás comprobando si la palabra es 100% válida. Primero porque solo recorres
cadena con
i, que depende de
contador, no de la longitud de la palabra y segundo porque según vas verificando la letra la reubicas... lo que puede dar lugar a que compruebes dos veces la misma letra y a que haya letras sin verificar.
¿No sería mejor hacerlo en dos pasos? Primero chequear la palabra y luego, si la palabra es válida, descolocar sus componentes?
Un saludo