Autor
|
Tema: media con arreglos (Leído 1,965 veces)
|
criser20
Desconectado
Mensajes: 7
|
no entiendo pq no me funciona esto para sacar la media de un arreglo dinamico, me podrian decir que tiene mal o algun consejo? code=c]#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 200
void media(int n,int arr[MAX]);
int main() {int opc, n, arreglo[n] ;
do{ system("CLS"); printf("Seleccione una accion.\n"); printf("1.Multiplicacion de matrices.\n"); printf("2.transpuesta de una matriz.\n"); printf("4.fibonacci.\n"); printf("7.Media,Varianza."); printf("0.Salir"); scanf("%d", &opc); switch(opc){ case 0: printf("gracias por usar el programa"); system("PAUSE"); break;
case 7: printf("cuantos numeros desea evaluar?"); scanf("%d", &n); media(n, arreglo); break;
}
} while(opc!=0); return 0; }
void media(int n,int arr[MAX]){ int i, x=0, j; for (i=0;i<n;i++){ printf("ingrese el %d numero", i+1); scanf("%d", &arr[i]); } for (j=0;j<n;j++){ x=x+arr[j]; } printf("la media es %d", x/n); }
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
*Nota, si a la etiqueta de apertura de "code", le pones =c te coloreará el código con formato C. int opc, n, arreglo[n] ;
Vamos a ver, tienes n que es una variable no inicializada... y después tienes arreglo[n]... mal vamos. Además, el compilador no te garantiza que las variables que vayan a crear en orden ( de izquierda a derecha ), en msvc al menos es al revés (primero se "crea" arreglo[n], luego n y finalmente opc ), así que ya sabes. Por otro lado, arreglo[n] no es, para nada, un arreglo dinámico. La palabra dinámico se reserva para cuando se hace uso de memoria dinámica, es decir, cuando hay una reserva de memoria con malloc o calloc. No es tu caso. Tu problema de código se soluciona sustituyendo arreglo[n] por arreglo[MAX], pero ya te digo, no es un arreglo dinámico.
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Además de lo indicado por eferion en cuanto a que no es un arreglo dinámico debes declarar como int la variable arr después de introducir el valor de n:..................... int opc, n ; .................... printf("cuantos numeros desea evaluar?"); scanf("%d", &n); int arreglo[n] ; media(n, arreglo); ................................
Y luego en la función media sería:void media(int n,int arr[n])
Y para que la media de un valor correcto, es decir con decimales que es lo usual en estos casos, como tienes declarados como int a x y arr debes hacer un cast a float e imprimir como %f o %g:............................. for (j=0;j<n;j++) x+=arr[j]; printf("\nla media es %f: \n", (float)x/n); system("pause"); ......................
Por cierto, observa que en el for he quitado las llaves. Siempre que el cuerpo de un for, if, etc tenga una sola línea no son necesarias. También he puesto una pausa para ver el resultado antes de que se limpie la pantalla con el system("CLS").
¡¡¡¡ Saluditos! ..... !!!!
|
|
« Última modificación: 4 Abril 2014, 16:46 pm por leosansan »
|
En línea
|
|
|
|
criser20
Desconectado
Mensajes: 7
|
gracias a ambos ya lo resolvi de verdad muchas gracias
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Solución para real media y windows media
Multimedia
|
pabloskyto
|
3
|
3,856
|
10 Noviembre 2007, 01:27 am
por Songoku
|
|
|
con arreglos
Java
|
artang
|
0
|
2,244
|
31 Marzo 2009, 04:54 am
por artang
|
|
|
arreglos en c
Programación C/C++
|
el futuro
|
5
|
3,460
|
21 Mayo 2010, 02:08 am
por @synthesize
|
|
|
Calcular moda, mediana, media aritmética, media geométrica de n números en C
« 1 2 »
Programación C/C++
|
ERIK546
|
13
|
54,896
|
30 Noviembre 2013, 19:31 pm
por EnriqueRodriguezM
|
|
|
Arreglos
Programación C/C++
|
angel_davidsr
|
3
|
2,426
|
17 Octubre 2012, 19:46 pm
por Puntoinfinito
|
|