Foros aprenderaprogramar.com
		Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Emmanueltr9 en 29 de Mayo 2019, 05:00
		
			
			- 
				Hola, este es el código con el que estoy tratando de calcular la moda obteniendo los valores de un listbox pero no logro hacer que funcione:
 
 int maximaVecesQueSeRepite = 0;
 int numeros= listBox1.Items.Count;
 int moda = 0;
 //Codigo para sacar la moda.
 for (int i = 0; i < edad; i++)
 {
 int vecesQueSeRepite = 0;
 for (int j = 0; j < edad; j++)
 {
 if (numeros.ToString()[i] == numeros.ToString()[i])
 {
 vecesQueSeRepite++;
 }
 }
 if (vecesQueSeRepite > maximaVecesQueSeRepite)
 {
 moda = numeros;
 }
 MessageBox.Show(moda.ToString());
- 
				en el if estás comparando exactamente el mismo número:
 
 if (numeros.ToString()[i] == numeros.ToString()[i]) 
 Cámbialo así:
 
 if (numeros.ToString()[i] == numeros.ToString()[j]) 
 Por otra parte, el valor de maximaVecesQueSeRepite ha de ser actualizado cada vez que encuentres un número que supere ese máximo de repeticiones. Fijate que su valor SIEMPRE es 0, nunca está variando, así que cualquier número que se repita una sola vez, lo va a superar.
 
 Supongo que te interesa actualizarlo así:
 
                 if (vecesQueSeRepite > maximaVecesQueSeRepite)
 {
 moda = numeros;
 maximaVecesQueSeRepite = vecesQueSeRepite;
 }
 
 
- 
				Ya lo he arreglado pero ahora me da error. El código es este:
 
 int maximaVecesQueSeRepite = 0;
 int edad = listBox1.Items.Count;
 int moda = 0;
 //Codigo para sacar la moda.
 for (int i = 0; i < edad; i++)
 {
 int vecesQueSeRepite = 0;
 for (int j = 0; j < edad; j++)
 {
 if (edad.ToString()[i] == edad.ToString()[j])
 {
 vecesQueSeRepite++;
 }
 }
 if (vecesQueSeRepite > maximaVecesQueSeRepite)
 {
 moda = edad;
 maximaVecesQueSeRepite = vecesQueSeRepite;
 }
 MessageBox.Show(moda.ToString());
- 
				Aquí te falta el indice i
 
   if (edad.ToString()[i] == edad.ToString()[j]) 
 Por otro lado, no se mucho de C# (¿o estas con VB.net?).
 Me baso en tu código para suponer que es correcto usar indices tras la invocación de ToString()
 
 Es más, esto me resulta un poco extraño_
 int edad = listBox1.Items.Count;
 A mí eso me suena que estás metiendo en la variable edad la longitud de listBox1.
 Es decir, eso te daría cuántos items tiene ese listBox.
 
 Pero no se si estás metiendo la edades. Apostaría que no, pues la variable edad es un simple int, así que tan solo puede almacenar un único valor numérico.
 Como mucho, podrías guardar una de las edades.., pero es que me parece que ni siquiera eso es lo que contiene, sino como dije, lo que tiene es la longitud de listBox1.
 
 Siento no poder ayudarte mejor, lo mio es Java... pero, desde mi desconocimiento de otros lenguajes, diría que ese código no está haciendo lo que tú necesitas y tendrías que revisarlo.
 
 Espero que alguien más hábil que yo en este foro te pueda orientar.