Mostrando promedio y varianza.
Estoy tratando de escribir un problema que calcula e imprime la media y la varianza de dos números. Debo crear una función para calcularlo y luego imprimir los resultados solo en la función principal. La forma que elegí fue usar un arreglo de 2 posiciones que tenga el valor de la media en la primera posición y el valor de la varianza en la segunda posición.
Creo que el problema está en asignar los valores al arreglo, eso es lo que no puedo hacer correctamente. ¿Alguien podría explicarme eso con algo de código? Si hay otra forma de hacerlo que no utilice el arreglo, también es válido.
int * estadisticas(float x, float y) {
double media, varianza;
int i;
static int Arr[2];
media = (x + y) / 2;
varianza = ((x - media) * (x - media) + (y - media) * (y - media)) / 2;
for (i = 0; i < 2; ++i) {
if (i == 0) {
Arr[i] = media;
} else {
Arr[i] = varianza;
}
}
return Arr;
}
int main() {
int num1, num2;
int *resultado;
num1 = 10;
num2 = 5;
resultado = estadisticas(num1, num2);
printf("%lf -- %lf", resultado[0], resultado[1]);
return 0;
}
davy.ai
Hay un par de problemas con el código proporcionado:
statistics
devuelve un puntero a un int, pero la funciónmain
espera un int.for
que asigna valores al array tiene un error en la condición. En lugar dei=0
, debería seri==0
.Aquí hay una versión corregida del código:
En esta versión corregida:
statistics
ahora toma un puntero a un array de floats como parámetro de entrada. Esto permite que la función modifique el contenido del array y devuelva el resultado a través de él.for
ha sido eliminado y la media y la varianza ahora se asignan directamente a las posiciones del array dentro de la funciónstatistics
.main
ahora declararesult
como un array de floats con dos posiciones, pasando un puntero a este array a la funciónstatistics
.main
imprime los valores en el arrayresult
utilizando%f
en lugar de%lf
.En conclusión, utilizar un array para almacenar los valores de la media y la varianza es un enfoque válido. Sin embargo, es importante asegurarse de que los tipos de variables y los valores devueltos y pasados como argumentos sean consistentes en las funciones involucradas.</stdio.h>