Foros del Web » Programación para mayores de 30 ;) » .NET »

necesito saber como obtener la frecuencia(repeticiones) de un numero en un vector

Estas en el tema de necesito saber como obtener la frecuencia(repeticiones) de un numero en un vector en el foro de .NET en Foros del Web. hola, y disculpen veran es q estoy haciendo un programa para obtener la media ponderada y la verdad para ello necesito, obtener la frecuencia o ...
  #1 (permalink)  
Antiguo 03/04/2012, 23:38
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cartago
Mensajes: 39
Antigüedad: 13 años
Puntos: 0
necesito saber como obtener la frecuencia(repeticiones) de un numero en un vector

hola, y disculpen veran es q estoy haciendo un programa para obtener la media ponderada y la verdad para ello necesito, obtener la frecuencia o las veces que se repite un numero en un vector por ejemplo si tengo en un vector {3,4,8,6,4,2,1,3}
mi programa me muestre:
3 se repite 2 veces
4 se repite 2 veces
8 se repite 1 vez
...
asi sucesivamente agradecerian cualquier ayuda de momento esto es lo que tengo

Cita:
public void ponde()
{

int i, j = new int();
int largo = new int();
largo = int.Parse(n.Text);//el largo del vector
int[] contador = new int[largo]; //indica las veces que se repite
//el vector[largo] tiene datos ingresados por teclado

for (i = 0; i < largo; i++)
{
for (j = 0; j < largo; j++)
{

if (vector[i] == vector[j])
contador[i]++;
}
listBox4.Items.Add("# " + vector[i] + " R " + contador[i]);
}

}
esto me muesta algo asi

# 3 R 2
# 4 R 2
# 8 R 1
# 6 R 1
# 4 R 2
# 2 R 1
# 1 R 1
# 3 R 2

y lo que necesito es

# 3 R 2
# 4 R 2
# 8 R 1
# 6 R 1
# 2 R 1
# 1 R 1


como veran los numeros los vuelve a repetir despues de contarlos y eso es lo q no he podido impedir gracias espero que puedan ayudarme
  #2 (permalink)  
Antiguo 04/04/2012, 08:45
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: necesito saber como obtener la frecuencia(repeticiones) de un numero en un

Lo que me parece es que deberías separar el proceso.

por ejemplo:

un método para contar las repeticiones:

public Dictionary<int, int> repeticiones(int[] ocurrencias)
{
Dictionary<int, int> r = new Dictionary<int, int>();
foreach (var item in ocurrencias)
{
if (r.ContainsKey(item))
r[item]++;//aumento las ocurrencias
else
r.Add(item, 1);//1 pq es la primera ocurrencia
}
return r;
}

... y otro método para mostrarlas:

public void mostrar(Dictionary<int, int> r)
{
foreach (var item in r.Keys)
{
listBox4.Items.Add("# " + item + " R " + r[item]);
}
}

fíjate que utilizo Dictionary para que la solución sea más eficiente O(n) ya que la que proponías es O(n2)

espero que te sirva mi respuesta y me agradezcas. Saludos.

Etiquetas: c#, frecuencia, repeticiones, vectores
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 13:40.