Fallo y no se cual

Iniciado por Choke1, 4 Enero 2015, 14:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Choke1

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; 
         }       
     }       
}

avesudra

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.
Regístrate en

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language


engel lex

tu programa tiene main y tiene el prototipo de la funcion antes que el main?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Choke1

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);

engel lex

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);
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

OnTheCore

#7
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.

Choke1

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

OnTheCore

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.