elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Calcular mas de una moda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Calcular mas de una moda  (Leído 5,136 veces)
acega

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Calcular mas de una moda
« en: 19 Marzo 2013, 01:38 am »

Como todos sabemos la moda es un termino que se utiliza en Estadística para saber cual es el numero que mas se repite.
Mi programa ordena números aleatorios y arroja la media la mediana y la moda y al estarlo corriendo me di cuenta que si hay mas de un número que se repite mas, entonces imprime el ultimo que se repitió en vez de los 2 o 3 que se repitieron aquí esta el código:
Código
  1. #include <stdio.h>
  2. #include <iostream.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. void main (void)
  6. {
  7. clrscr();
  8. int arreglo[10],x,cont,mod;
  9. float Prom;
  10. randomize();
  11. cout<<"***Metodo Burbuja, Media,mediana,moda***\a"<<endl;
  12. for (int i=0;i<10;i++)
  13. {
  14.  arreglo[i]=random(10)+1;
  15.  cout<<arreglo[i]<<" ";
  16. }
  17. getch();
  18. for(int j=0;j<10;j++)
  19.  {
  20.   for(int k=0;k<10;k++)
  21.   {
  22.    if(arreglo[j]>arreglo[k])
  23.    {
  24.     x=arreglo[k];
  25.     arreglo[k]=arreglo[j];
  26.     arreglo[j]=x;
  27.    }
  28.   }
  29.  }
  30. cout<<"\n";
  31. for(int l=9;l>=0;l--)
  32. {
  33.  cont=0;
  34.  
  35.  cout<<arreglo[l]<<" ";
  36.  for(int a=9;a>=0;a--)
  37.  {
  38.   if(arreglo[l]==arreglo[a])
  39.   {
  40.    cont++;
  41.   }
  42.   if(cont>=2)
  43.   {
  44.    mod=arreglo[l];
  45.   }
  46.  }
  47. }
  48. for(int b=9;b>=0;b--)
  49. {
  50. Prom=Prom+arreglo[b];
  51. }
  52. Prom=Prom/10;
  53. cout<<"\n\20 Media: "<<Prom;
  54. cout<<"\n\20 Mediana: "<<arreglo[5]<<" "<<arreglo[4];
  55. cout<<"\n\20 Moda: "<<mod;
  56.  
  57. getch();
  58. }


« Última modificación: 21 Marzo 2013, 23:27 pm por acega » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Problema con moda
« Respuesta #1 en: 19 Marzo 2013, 05:07 am »

Lo primero que debes hacer es cambiar los nombres de los encabezados, evitar el uso de la biblioteca conio de Borland y cambiar la definición de la función main. El porque se explica en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

En este momento tu programa no calcula correctamente la moda ya esta se toma como la ultima repetición de dos o mas números. Para explicarlo mejor esta es una salida de tu programa con ese problema:
Código:
***Metodo Burbuja, Media,mediana,moda***
10 7 1 1 1 5 5 9 8 7
1 1 1 5 5 7 7 8 9 10
? Media: 5.4
? Mediana: 5 7
? Moda: 7
Como puedes ver toma la moda como 7 cuando debería ser 1.

Para calcularla correctamente debes utilizar dos bucles: el primero para conocer el numero que se repite mas veces y el segundo para imprimir todos los números que cumplan con ese requisito (así imprimes la moda cuando esta son dos o mas números).

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
acega

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Calcular mas de una moda
« Respuesta #2 en: 22 Marzo 2013, 00:04 am »

ok gracias ya lo corregi pero no se como hacer esto:
el segundo para imprimir todos los números que cumplan con ese requisito (así imprimes la moda cuando esta son dos o mas números).

En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Calcular mas de una moda
« Respuesta #3 en: 23 Marzo 2013, 19:09 pm »

Lo mas sencillo es manejar la moda igual a uno como un caso especial (ya que se deben imprimir todos los números).

En los demás casos utilizas un bucle que itere por todos los elementos menos el primero. Comparas el elemento actual con el anterior, si es igual incrementas el numero de repeticiones y si este es igual a la moda imprimes el numero.

Un programa de ejemplo en C que ejemplifica los dos bucles:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main (void)
  5. {
  6.   int num[] = {1, 1, 2, 2, 3, 3};
  7.   int num_elem = (int) (sizeof num / sizeof num[0]);
  8.   int moda;
  9.   int reps;
  10.   int i;
  11.  
  12.   /* Calculo de la moda */
  13.   moda = reps = 1;
  14.   for (i = 1; i < num_elem; i++)
  15.      if (num[i] != num[i - 1])
  16.         reps = 1;
  17.      else if (++reps > moda)
  18.         moda = reps;
  19.   printf("moda == %d\n", moda);
  20.  
  21.   /* Impresion de la moda */
  22.   if (moda == 1)
  23.      for (i = 0; i < num_elem; i++)
  24.         printf(" %d", num[i]);
  25.   else {
  26.      reps = 1;
  27.      for (i = 1; i < num_elem; i++)
  28.         if (num[i] != num[i - 1])
  29.            reps = 1;
  30.         else if (++reps == moda)
  31.            printf(" %d", num[i]);
  32.   }
  33.   putchar('\n');
  34.  
  35.   return EXIT_SUCCESS;
  36. }
Debes implementar bucles similares en tu programa en C++ después de las partes donde pides los números y los ordenas.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programa que calcula el promedio y la moda. duda con la moda
Programación C/C++
noobc 1 5,061 Último mensaje 27 Mayo 2010, 02:24 am
por h0oke
Calcular moda, mediana, media aritmética, media geométrica de n números en C « 1 2 »
Programación C/C++
ERIK546 13 53,899 Último mensaje 30 Noviembre 2013, 19:31 pm
por EnriqueRodriguezM
calcular moda c++
Programación C/C++
indict 4 20,901 Último mensaje 24 Enero 2013, 15:04 pm
por flony
Que moda habia antes de la moda hipster?
Foro Libre
wholy 4 4,323 Último mensaje 25 Junio 2013, 17:21 pm
por el-brujo
Como calcular la media, mediana, y moda
Programación C/C++
M-Stewart612 2 4,057 Último mensaje 1 Noviembre 2018, 04:03 am
por M-Stewart612
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines