El return está dentro de un "if". Por lo tanto, si no se llegase a cumplir la condición nunca se devolvería el valor. Yo lo evito poniendo el returno como última linea de las funciones.
Yo reescribiria la funcion de dos formas, llevando un booleando sabiendo cuando has de salir del bucle:
Código C++:
Ver originalint num_cifras (int numero){
int cont=1;
int salir = 0;
while ((numero%10!=0)&&(salir==0){
numero=(numero/10);
cont++;
if (numero<=10) {
salir = 1;
}
}
return cont;
}
O usando un break:
Código C++:
Ver originalint num_cifras (int numero){
int cont=1;
while (numero%10!=0){
numero=(numero/10);
cont++;
if (numero<=10) {
break;
}
}
return cont;
}
El break creo que es más óptimo, pero a nivel de diseño, quizás es más limpia la versión con el booleano.