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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  arreglo con varias modas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: arreglo con varias modas  (Leído 1,447 veces)
bobitttyy

Desconectado Desconectado

Mensajes: 5


Ver Perfil
arreglo con varias modas
« en: 15 Abril 2015, 01:15 am »

quiero saber cual es el elemento que se repite en mayor cantidad.....pongo el cuerpo del código:
Código:
int a[9]={2,3,1,2,4,1,5,1,2};
int max=0,repite,masrep;
for(int i=0;i<9;i++){
repite=0;
for(int j=0;j<9;j++){
if(a[i]==a[j]){
repite++;
}
}
if(repite>max){
masrep=a[i];
max=repite;
}
}
cout<<"el elemnto que mas se repite es "<<masrep<<"\n";
cout<<"y se repite "<<max<<" veces";

el problema es que este arreglo tiene dos elementos que se repiten en mayor cantidad
y me bota asi:
EL ELEMENTO QUE MAS SE REPITE ES 2
pero yo quiero que me bote  no solo a uno sino también al otro
EL ELEMENTO QUE MAS SE REPITE ES 2
EL ELEMENTO QUE MAS SE REPITE ES 1
sugerencias.....


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: arreglo con varias modas
« Respuesta #1 en: 16 Abril 2015, 17:35 pm »

pero yo quiero que me bote  no solo a uno sino también al otro
EL ELEMENTO QUE MAS SE REPITE ES 2
EL ELEMENTO QUE MAS SE REPITE ES 1
sugerencias.
Para ello debes almacenar en un array la repetición de cada numero. Por simplicidad ese array lo inicializas a cero utilizando -1 como valor centinela para indicar que un numero es la repetición de algún otro anterior.

Para explicarlo mejor un ejemplo en C:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define PROCESADO  -1
  5.  
  6. #define NUM_ELEM(a) (sizeof (a) / sizeof (a[0]))
  7.  
  8. int main(void)
  9. {
  10.   int num[] = {2, 3, 1, 2, 4, 1, 5, 1, 2};
  11.   int rep[NUM_ELEM(num)] = {0};
  12.   size_t num_elem = NUM_ELEM(num);
  13.   size_t i;
  14.   size_t j;
  15.  
  16.   for (i = 0; i < num_elem; i++){
  17.      if (rep[i] == PROCESADO)
  18.         continue;
  19.  
  20.      rep[i] = 1;
  21.      for (j = i + 1; j < num_elem; j++)
  22.         if (num[i] == num[j]){
  23.            rep[i]++;
  24.            rep[j] = PROCESADO;
  25.         }
  26.   }
  27.  
  28.   for (i = 0; i < num_elem; i++)
  29.      if (rep[i] != PROCESADO)
  30.         printf("%d: %2d\n", num[i], rep[i]);
  31.  
  32.   return EXIT_SUCCESS;
  33. }
Y su salida es:
Código:
2:  3
3:  1
1:  3
4:  1
5:  1

Espero que te de una idea para modificar tu programa en C++, la aproximación es la misma mas el calculo del máximo de repeticiones e imprimir los números que cumplan con ese criterio.

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
Arreglo en ComboBox
Programación Visual Basic
yonky_85 2 2,511 Último mensaje 28 Septiembre 2006, 18:40 pm
por CeLaYa
JMenuItem en arreglo
Java
ioshi 2 4,352 Último mensaje 15 Abril 2009, 20:41 pm
por celestino
arreglo en c++
Programación C/C++
sabar 7 3,484 Último mensaje 1 Diciembre 2014, 23:54 pm
por zShackra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines