/* medidas.c */
#include <stdio.h>
#include <conio.h>
#define MAX 100
float media(int V[], int elementos);
int moda(int V[], int elementos);
void main()
{
int V[MAX], nModa, i, elementos, contador;
float nMedia;
clrscr();
/* Lectura de numeros */
printf("--- Medidas ---\n");
printf("Numero de elementos: ");
scanf("%d", &elementos);
for(i=0; i<elementos; i++)
{
printf("V [%d] = ", i);
scanf("%d", &V);
}
nMedia = media(V, elementos);
printf("\nMedia = %0.2f\n", nMedia);
contador = 1;
for(i=1; i<elementos; i++)
{
if((float)V>nMedia)
{
printf("V [%d] = %d\n", i, V);
contador++;
}
}
nModa = moda(V, elementos);
if(nModa==-1)
printf("\n\nNo existe moda");
else
{
printf("\n\nModa = %d\n", nModa);
contador = 0;
for(i=0; i<elementos; i++)
{
if(V>nModa)
{
printf("V [%d] = %d\n", i, V);
contador++;
}
}
}
getch();
}
float media(int V[], int elementos)
{
int i;
float nMedia;
float suma = 0;
/* Obtiene suma */
for(i=0;i<elementos;i++)
suma += V;
nMedia = suma / elementos;
return nMedia;
}
int moda(int V[], int elementos)
{
int i, j, k, total, indice, existeModa, N[MAX], Rep[MAX];
int nModa;
/* Saca copia del arreglo */
for(i=0;i<elementos;i++)
N=V;
/* Saca numeros distintos */
total = elementos;
for(i=0;i<elementos;i++)
{
for(j=i+1;j<elementos;j++)
{
/* Si encuentra numero repetido */
if(N==N[j])
{
/* Recorre una posicion elementos posteriores */
for(k=j+1;k<elementos;k++)
N[k-1]=N[k];
elementos--;
j--;
}
}
}
/* Halla repeticiones de cada numero distinto */
for(i=0; i<elementos; i++)
Rep = 0;
for(i=0; i<elementos; i++)
for(j=0;j<total;j++)
if(N==V[j])
Rep++;
/* Halla indice del elemento que mayor numero de veces se repite */
indice = 0;
for(i=1; i<elementos; i++)
if(Rep>Rep[indice])
indice = i;
/* Verificacion por si 2 numeros se repiten igual numero de veces */
existeModa=1;
for(i=0;i<elementos;i++)
if(i!=indice)
{
if(Rep==Rep[indice])
{
existeModa = 0;
break;
}
}
if(existeModa==1)
nModa = N[indice];
else
nModa = -1;
return nModa;
}