• Viernes 8 de Noviembre de 2024, 18:55

Autor Tema:  [Problema] Crear función que retorne dos valores  (Leído 2524 veces)

DanielFB93

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
[Problema] Crear función que retorne dos valores
« en: Sábado 11 de Febrero de 2012, 20:57 »
0
¡Hola! De nuevo estoy teniendo problemas con un código en C, y esta vez relacionado con funciones. Les explico: estoy haciendo un ejercicio que muestra una estadística sobre la evolución de una población de leones y cebras en una isla. Como parte del ejercicio, necesito que me diga "El número mínimo de leones en el año ___ fue de ___ " , y lo mismo pero para cebras.

El problema viene al hacer la función: una posible solución, que es la que he implementado, es hacer una función "mínimo" para ocas y otra para leones de tipo void que después de hacer sus cálculos me muestre lo que toque.

La alternativa que había pensado es hacer una función de tipo int que me retornara dos valores: uno para el año y otro para el número. Y esto hacerlo mediante un array. El problema es que me han comentado que es peligroso hacerlo por temas de inteligibilidad del código y eso, pero yo quiero tener un código más "flexible", por decirlo de algún modo. ¿Se les ocurre alguna idea?

Código: [Seleccionar]
void minimo_leones(int x[]){

int count, min, current_year=0;
min = x[0];

for(count=0; count<=YEARS; count++){
if(x[count]<min){
min = x[count];
current_year = count;
}
}
printf("La poblacion minima de leones fue de %d en el anio %d.\n", min, current_year);
}

caperutxa

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: 00
    • Ver Perfil
Re:[Problema] Crear función que retorne dos valores
« Respuesta #1 en: Domingo 12 de Febrero de 2012, 21:01 »
0
Puedes hacer lo mismo pasando dos punteros como parámetros

void minimo(int *leones, int *tigres)

o algo similar.

PD: No recuerdo la sintaxis correcta en C para punteros, por lo que los he indicado con el *
Si quieres obtener resultados diferentes no hagas siempre lo mismo.


DanielFB93

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re:[Problema] Crear función que retorne dos valores
« Respuesta #2 en: Domingo 12 de Febrero de 2012, 21:25 »
0
También había pensado en esa alternativa (aunque sinceramente, aún no la sé emplear). Aún así, nos dijeron que no podíamos usar punteros, y que lo podíamos hacer sin ellos. Eso es lo que me dejó un poco desconcertado. Si tienen alguna otra idea de como hacerlo, lo agradecería mucho porque por mucho que pienso, no doy con una respuesta.

Gracias!

caperutxa

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: 00
    • Ver Perfil
Re:[Problema] Crear función que retorne dos valores
« Respuesta #3 en: Lunes 13 de Febrero de 2012, 10:21 »
0
Bueno, realmente ahora que vuelvo a mirar el código tu no devuelves nada. Imprimes por pantalla un resultado y pus. No necesitas hacer ningún cambio.

Donde necesitas los valores?
Si quieres obtener resultados diferentes no hagas siempre lo mismo.


DanielFB93

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re:[Problema] Crear función que retorne dos valores
« Respuesta #4 en: Lunes 13 de Febrero de 2012, 14:34 »
0
Bueno, realmente ahora que vuelvo a mirar el código tu no devuelves nada. Imprimes por pantalla un resultado y pus. No necesitas hacer ningún cambio.

Donde necesitas los valores?
Exacto, solo me imprime el texto por pantalla. Pero tengo una función para leones y otra para zebras, y eso es lo que me fastidia. Lo que pretendo hacer es una función generalizada que retorne un valor u otro dependiendo de si son zebras o leones.

La razón de esto, más alla de la limpieza del código, es que en otra fase del programa tengo que imprimir SOLO el número de zebras o leones, y claro, eso me implica hacer otra función que hace exactamente lo mismo que la que he mostrado, con la única diferencia que me retorna un número.

Por ese motivo quiero que me retorne dos valores, para poderlos utilizar cuando quiera y donde quiera sin tener que sobrecargar el código.

caperutxa

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: 00
    • Ver Perfil
Re:[Problema] Crear función que retorne dos valores
« Respuesta #5 en: Martes 14 de Febrero de 2012, 12:56 »
0
Si entiendo bien tu función para calcular el mínimo depende de si son leones o cebras.

Has probado a llamar al método con minimo("nombre","numero). Esto es:

void minimo(string name, int x){Calculas lo que tengas que calcular; return resultado;}

y llamas a la función

minimo(leones, 25);
minimo(cebras, 50);

Eso te permite obtener el resultado directamente e imprimirlo por pantalla. Te retorna un valor por cada llamada, pero puedes llamarla dos veces:

printf("La poblacion minima de leones fue %d , y de cebras fue %d , en el anio %d.\n", minimo(leones, 25), minimo(cebra,50), current_year);

Si quieres obtener resultados diferentes no hagas siempre lo mismo.


DanielFB93

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re:[Problema] Crear función que retorne dos valores
« Respuesta #6 en: Sábado 18 de Febrero de 2012, 19:04 »
0
Solucionado! Muchísimas gracias  :jumpie: