Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/07/2013, 03:44
Avatar de Malenko
Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Duda con programa que funciona bien

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 original
  1. int num_cifras (int numero){
  2.     int cont=1;
  3.         int salir = 0;
  4.     while ((numero%10!=0)&&(salir==0){
  5.         numero=(numero/10);
  6.         cont++;
  7.         if (numero<=10) {
  8.             salir = 1;
  9.         }
  10.     }
  11.         return cont;
  12. }

O usando un break:

Código C++:
Ver original
  1. int num_cifras (int numero){
  2.     int cont=1;
  3.     while (numero%10!=0){
  4.         numero=(numero/10);
  5.         cont++;
  6.         if (numero<=10) {
  7.             break;
  8.         }
  9.     }
  10.         return cont;
  11. }

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.
__________________
Aviso: No se resuelven dudas por MP!