Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/06/2011, 11:19
Avatar de CapacProg
CapacProg
 
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: Problema con frecuencia de arreglo

Cita:
Iniciado por sam90 Ver Mensaje
Sensillamente puedes crear un array que vaya del 1 al 10

int contadores[11] = {0}; // puedes poner hasta 10 pero despues habria que cambiar unos indices.

Despues lo que haces es lo siguiente. Si el primer numero es un 1 sumas uno a la posicion 1, si es un 2 sumas un uno a la posicion dos. Lo haces de esta forma:

Código C:
Ver original
  1. for(int i=1;i<16;i++)
  2. contadores[arreglo[i]] ++;

Código C:
Ver original
  1. for(int i=1;i<11;i++)
  2. cout<<setw(8)<<i<<setw(13)<<contadores[i]<<endl;c

Esta tecnica tiene un nombre, pero no me acuerdo. Se aprovecha de que tenes un numero maximo como entrada.
Espero que entiendas.
En efecto si se tiene un máximo funciona; pero si los números son generados aleatoriamente falla; en ese caso debes de tener una matriz bidimensional donde en una fila guardas los numeros y en otra sus frecuencias, cada vez que lees un numero primero lo busquas en la matriz (primera fila), si no lo hallas, lo guardas y en la segunda fila le pones frecuencia 1; pero si lo encuentras simplemente aumentas su frecuencia en 1 (segunda fila).
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%