Calcular la Moda, Mediana y Media
Calcular según una serie de números introducidos por teclado, solicitados mediante un bucle condicional hasta que se rellene un vector de números de 10 posiciones. Una vez finalizada la introducción de números en el ejercicio o practica se ha de calcular como resultados finales el valor de la Moda, la Mediana y la Media de los números introducidos en el ejercicio o practica.
Calculo de la moda, mediana y media de una serie de números introducidos por teclado.
El planteamiento solicitado por uno de nuestros queridos usuarios a www.aprendoencasa.com, ha sido el de solicitar un programa que solicite una cantidad de números por teclado y una vez finalizada la introducción por teclado de los números, el ejercicio o practica con solución ha de visualizar como resultado de la misma, los valores correspondientes a la Moda,Mediana y Media.
/*
Calculo de la moda, mediana y media de una
serie de números introducidos por teclado.
El planteamiento solicitado por uno de nuestros queridos
usuarios a www.aprendoencasa.com, ha sido el de solicitar
un programa que solicite una cantidad de números por teclado y
una vez finalizada la introducción por teclado de los números,
el ejercicio o practica con solución ha de visualizar como
resultado de la misma, los valores correspondientes
a la Moda,Mediana y Media.
Indicaros que esperamos vuestras aportaciones en
www.aprendoencasa.com, si teneis algun comentario, duda
,aclaración, o solución propuesta para los ejercicios
estamos encantados de atenderla en la medida de nuestras
posibilidades. Un saludo de nuevo y gracias por visitar
www.aprendoencasa.com
*/
#include <stdio.h>
#include <stdlib.h>
// Definicion del numero de elementos maximos del vector
#define MAX 10
int main(int argc, char *argv[])
{
// Variables a utilizar por el programa
int numeros[MAX];
int contador=0;
int auxiliar[MAX];
int posicion=0;
int numero=0;
int contador2=0;
int mayor=0;
int posicionmayor=0;
int bandera=0;
float suma=0;
// Solicitar los numeros para rellenar el vector
for(contador=0;contador<MAX;contador++) {
printf("No. %d : ",contador+1);
scanf(" %d",&numeros[contador]);
}
// Visualizar los elementos introducidos en el vector
printf("\nElementos del vector : ");
for(contador=0;contador<MAX;contador++) {
printf(" %d",numeros[contador]);
}
// Calcular la moda
// Rellenamos el vector auxiliar inicializandolo a valores 0
for(contador=0;contador<MAX;contador++) {
auxiliar[contador]=0;
}
// Recorrer el vector comprobando las repeticiones de cada numero
// y almacenando las mismas en el vector auxiliar segun la posicion
// del numero
for(contador=0;contador<MAX;contador++) {
numero = numeros[contador];
posicion = contador;
for(contador2=contador;contador2<MAX;contador2++) {
if(numeros[contador2]==numero) auxiliar[posicion]++;
}
}
// Una vez establecidas las repeticiones de cada numero se ha de establcer
// cual es la posicion del vector que tiene un numero de repeticiones mayor
// ya que esta es la posicion que se corresponde con el numero que se repite
// mas veces el vector ( MODA )
// se establece en primer lugar el mayor como el primer elemento del vector
mayor=auxiliar[0];
posicionmayor = 0;
for(contador=0;contador<MAX;contador++) {
if(auxiliar[contador]>mayor) {
posicionmayor=contador;
mayor=auxiliar[contador];
}
}
// Visualizar el elemento con mas frecuencia de aparicion
printf("\nMODA : %d",numeros[posicionmayor]);
// CALCULO DE LA MEDIANA
// en primer lugar se realiza la ordenacoin del vector de numeros
bandera=0;
for(contador=MAX;contador>0 && bandera==0;contador--) {
bandera=1;
for(contador2=0;contador2<contador;contador2++) {
if(numeros[contador2]>numeros[contador2+1]) {
numero = numeros[contador2];
numeros[contador2] = numeros[contador2+1];
numeros[contador2+1]=numero;
bandera=0;
}
}
}
// Visualizar los elementos introducidos en el vector
printf("\nElementos del vector : ");
for(contador=0;contador<MAX;contador++) {
printf(" %d",numeros[contador]);
}
// Dependiendo de si el numero d elementos del vector es par o impar
// la mediana ha de ser el punto central del mismo o los dos puntos centrales
// del mismo.
if(MAX%2!=0) {
printf("\nEL valor de la mediana es : %d",numeros[MAX/2]);
} else {
printf("\nEL valor 1 de la mediana es : %d",numeros[MAX/2]);
printf("\nEL valor 2 de la mediana es : %d",numeros[(MAX/2)-1]);
}
// Calcular la media www.aprendoencasa.es
suma = 0;
for(contador=0;contador<MAX;contador++) {
suma+=numeros[contador];
}
printf("\nMEDIA : %.2f\n",suma/MAX);
return 0;
}
El ejercicio queda de la siguiente forma:
Gracias por vuestra visita
Por qué al aumentar el número de elementos máximos en el vector en el momento de ordenarlos comienza desde 0? y algunos elementos ya no aparecen
He comprobado el funcionamiento y es correcto, incluso aumentando el numero max de elementos del vector, ten en cuenta que para aumentar el numero maximo de elementos del vector solo se ha de cambiar la constante MAX en la parte superior del programa y en vez del valor 10, asignarle el valor que deseas