Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Choke1 en 4 Enero 2015, 14:58 PM

Título: Fallo y no se cual
Publicado por: Choke1 en 4 Enero 2015, 14:58 PM
Me da fallo en esta funcion pero no se cual es:

int multiplos(int min,int max,int num){
   int i;
   for(i=min;i<max;i++){
      if(num%i==0){
         return i; 
         }       
     }       
}
Título: Re: Fallo y no se cual
Publicado por: avesudra en 4 Enero 2015, 15:59 PM
No somos adivinos, ¿qué pasa concretamente? Para publicar código colócalo entre las etiquetas GeSHi para que te quede tal que así:
Código (cpp) [Seleccionar]
int multiplos(int min,int max,int num){
  int i;
  for(i = min; i < max; i++){
     if(num % i == 0){
        return i;
        }      
    }      
}

Aunque suponiendo que quieras averiguar todos los múltiplos debes devolver un array no el primer entero que sea múltiplo, no se si me explico.

Un saludo.
Título: Re: Fallo y no se cual
Publicado por: rir3760 en 4 Enero 2015, 16:05 PM
El mensaje de error se genera porque no indicas el valor de retorno si el numero a verificar no es múltiplo de ninguno de los números en el intervalo [min, max):
int multiplos(int min,int max,int num)
{
   int i;
   
   for (i = min; i < max; i++){
      if (num % i == 0){
         return i; /* Valor de retorno si se cumple la condicion */
      }
   }
   
   /* Aqui se debe indicar el valor de retorno en caso de no terminar la funcion en el bucle */
}


Un saludo
Título: Re: Fallo y no se cual
Publicado por: Choke1 en 4 Enero 2015, 17:35 PM
Nada tampoco mira:

http://subefotos.com/ver/?a93318f16842cd2769ed853af53d62ddo.png#codigos
Título: Re: Fallo y no se cual
Publicado por: engel lex en 4 Enero 2015, 17:37 PM
tu programa tiene main y tiene el prototipo de la funcion antes que el main?
Título: Re: Fallo y no se cual
Publicado por: Choke1 en 4 Enero 2015, 17:45 PM
Cita de: engel lex en  4 Enero 2015, 17:37 PM
tu programa tiene main y tiene el prototipo de la funcion antes que el main?

si el prototipo es este:

int multiplos (int,int,int);
Título: Re: Fallo y no se cual
Publicado por: engel lex en 4 Enero 2015, 17:46 PM
el prototipo debe ser idéntico a la definición de la función, el prototipo debe ser

Código (cpp) [Seleccionar]
int multiplos(int min,int max,int num);
Título: Re: Fallo y no se cual
Publicado por: OnTheCore en 4 Enero 2015, 20:28 PM
Cita de: engel lex en  4 Enero 2015, 17:46 PM
el prototipo debe ser idéntico a la definición de la función, el prototipo debe ser

Código (cpp) [Seleccionar]
int multiplos(int min,int max,int num);
No necesariamente, con declarar el tipo esta bien. El usuario lo declaro bien, pero claro, es mejor practica declararlo como vos lo hiciste.

EDITO: OP, fijate que retornas solo si num%i==0. Que pasa si nunca se cumple esa condicion? el valor de retorno va a ser inesperado. Pone un return al final que abarque el no cumplimiento de la condicion.
Título: Re: Fallo y no se cual
Publicado por: Choke1 en 4 Enero 2015, 22:32 PM
Solucione el fallo, me podéis insultar si queréis jeje, la cosa es que había definido una constante que se llamaba max y claro en la funcion ponia también max de nombre de una variable XD
Título: Re: Fallo y no se cual
Publicado por: OnTheCore en 5 Enero 2015, 02:06 AM
Cita de: Choke1 en  4 Enero 2015, 22:32 PM
Solucione el fallo, me podéis insultar si queréis jeje, la cosa es que había definido una constante que se llamaba max y claro en la funcion ponia también max de nombre de una variable XD
Nadie va a insultarte porque son errores comunes de principiante y de eso se aprende. Mi consejo para la proxima vez, es que las constantes las escribas en mayusculas y las variables en minuscula.
Título: Re: Fallo y no se cual
Publicado por: Choke1 en 5 Enero 2015, 13:47 PM
Cita de: OnTheCore en  5 Enero 2015, 02:06 AM
Nadie va a insultarte porque son errores comunes de principiante y de eso se aprende. Mi consejo para la proxima vez, es que las constantes las escribas en mayusculas y las variables en minuscula.
Ok gracias lo tendre en cuenta