Foros del Web » Programación para mayores de 30 ;) » C/C++ »

moda en un arreglo..ayuda!

Estas en el tema de moda en un arreglo..ayuda! en el foro de C/C++ en Foros del Web. Necesito hacer esto... Escriba un programa que lea un arreglo de n números y realice las siguientes operaciones: • Imprimir la media • Imprima la ...
  #1 (permalink)  
Antiguo 13/05/2009, 16:48
 
Fecha de Ingreso: mayo-2009
Mensajes: 17
Antigüedad: 15 años
Puntos: 0
moda en un arreglo..ayuda!

Necesito hacer esto...
Escriba un programa que lea un arreglo de n números y realice las siguientes operaciones:
• Imprimir la media
• Imprima la mediana
• Imprima la moda
• Imprima la varianza


Solo me falta la moda....como hago?...ayuda!...grax:
  #2 (permalink)  
Antiguo 13/05/2009, 18:03
 
Fecha de Ingreso: junio-2006
Mensajes: 63
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: moda en un arreglo..ayuda!

Hola amigo programador

Aca te mando mi manera de encontrar la moda un Arreglo Unidimecional.
La idea es contar las repeticiones de cada numero y obtener el mayor numero de repeticiones de un numero y ver si es unico, y si lo es tiene moda y si no lo es entonces no tiene moda, mejor chequea el codigo.

Código:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

#define Max 40

void leerR(int Ar[Max], int *n);
void mostrarR(int Ar[Max], int n);
void modaR(int Ar[Max], int n);

int main(){
   int A[Max],nc;
   leerR(A,&nc);
   mostrarR(A,nc);
   modaR(A,nc);
   system("pause");
   return 0;
}

void leerR(int Ar[Max], int *n){
   int i,val;
   printf("\n Ingrese el tamaño: ");
   scanf("%d",n);
   printf("\n Leer:\n");
   for(i=0;i<*n;i=i+1){
      printf(" a[%d]= ",i);
      scanf("%d",&val);
      Ar[i]=val;
   }    
}
void mostrarR(int Ar[Max], int n){
   int i;
   printf("\n");
   for(i=0;i<n;i=i+1){
      printf(" %d",Ar[i]);   
   }
   printf("\n");       
}
void modaR(int Ar[Max], int n){
   int i,j,k,c,pos,aux,Aux[Max],Cnt[Max],mayor=0;
   for(i=0;i<n;i=i+1){
      Aux[i]=Ar[i];
   }
   for(i=0;i<n;i=i+1){
      c=1;
      for(j=i+1;j<n;j=j+1){
         if(Aux[i]==Aux[j]){//compara el numero con los demas
            c=c+1;
            for(k=j;k<n-1;k=k+1){//elimina el repetido
               aux=Aux[k];
               Aux[k]=Aux[k+1];
               Aux[k+1]=aux;
            }
            n=n-1;
            j=j-1;      
         }
      }
      Cnt[i]=c;
      if(mayor<c){
         mayor=c;//se le asigna el mayor valor repeticiones 
      }
   }
   c=0;
   for(i=0;i<n;i=i+1){//busca si el valor repetido es unico
      if(Cnt[i]==mayor){
         pos=i;
         c=c+1;   
      }
   }
   if(c==1){
      printf("\n La moda es: %d\n",Ar[pos]);
   }else{
      printf("\n No tiene moda\n"); 
   }
   mostrarR(Aux,n);//muestra el arreglo sin repeticiones
   mostrarR(Cnt,n);//muestra la cantidad de repiticiones
   printf("\n");       
}
  #3 (permalink)  
Antiguo 13/05/2009, 21:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 17
Antigüedad: 15 años
Puntos: 0
De acuerdo Respuesta: moda en un arreglo..ayuda!

Oye...gracias...!!!!!...eso era lo que necesitaba.....pero...

si puedes hazme el favor pero con una matriz.....gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:45.