Buenas a todos. tengo un codigo el cual genera numeros aleatorios y guarda cuantas veces se repite
ejemplo;
Citar
//numeros aleatorios
5
6
7
5
6
7
//en mi array tendria que aparecer algo como
1 --- 0
2 --- 0
3 --- 0
4 --- 0
5 --- 2
6 --- 2
7 --- 2
el problema que tengo es a la hora de incrementar el valor es decir coloco la 1º vez un 1 pero no se añadirle mas .... perdonen mi ignorancia y gracias por su atencion
Lo que yo recomendaría es que el a reglo generado lo ordenaras, y después en tiempo lineal lo recorres y vas contando he imprimiendo cuantas veces se repite.
La ordenacion sera lo principal, por lo que hay 2 posibles formas.
Si de antemano tu sabes que los números generados tienen un limite, esto es, están en un rango. Entonces solamente has un arreglo de tamaño n donde n es el limite de los números generados, y comienza a recorrer el arreglo random, si aparece un 500, entonces en la posición 500 del nuevo arreglo le pones un uno, si este se vuelve a encontrar a un 500 entonces incrementa.
Si no tienen limite, entonces simplemente implementa cualquier algoritmo de ordenamiento, que preferiblemente tenga complejidad de nlogn.
int loteria= numero aleatorio
array[numero maximo aleatorio]
// Para contar
do{
loteria= generar numero ();
array[loteria]=array[loteria]++;
} while (la condicion que sea)
// para listar:
for( x=1;x<numero maximo aleatorio;x++)
{
cout << "el numero"+ x +"se ha repetido" +array
- + "veces"
}
El resultado seria aproximadamente así:
el numero 1 se ha repetido 3 veces
el numero 2 se ha repetido 4 veces
el numero 3 se ha repetido 0 veces
el numero 4 se ha repetido 13 veces
Random rnd = new Random();
int valor, limite = 7;
int arreglo[] = new int[limite];
msj("Numeros Aleatorios");
for(int x = 0; x < limite; x++)
{
valor = rnd.nextInt(limite)+1;
arreglo[valor-1]++;
msj(valor);
}
msj("\nNumeros Repetidos");
for(int x = 0; x < arreglo.length; x++)
msj("El Numero " + (x+1) + " Se Repite: " + arreglo[x] + " veces");