Programación General > C/C++
[Problema] Crear función que retorne dos valores
DanielFB93:
¡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: ---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);
}
--- Fin del código ---
caperutxa:
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 *
DanielFB93:
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:
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?
DanielFB93:
--- Cita de: caperutxa en Lunes 13 de Febrero de 2012, 10:21 ---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?
--- Fin de la cita ---
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.
Navegación
[#] Página Siguiente
Ir a la versión completa