Tengo dos variables o conceptos.
- El número de correos que se envían.
- El usuario que lo envía. Dos o más usuarios pueden enviar la misma cantidad de correos.
Los usuarios son muchos. La idea es crear un top de usuarios según los correos que envía.
Después de solucionar el problema. Lo he resuelto mediante colecciones y la inversión de la misma.
En el procedimiento que muestro cantidad y mail del usuario es este:
Public Sub clasificar(cemails As Collection)
Dim valores As New String[]
Dim claves As New Integer[]
Dim email As String
Dim clave As Integer
Dim cantidadmostrar As Integer
'Las claves son la cantidad que ha enviado un grupo de usuarios
For Each valores In cemails
claves.Add(CInt(cemails.Key))
Next
claves.Sort(gb.Descent)
'Mostrar el top 10 de los usuarios que más se recibe/escriben
For Each clave In claves
For Each email In cemails[clave]
cantidadmostrar += 1
If cantidadmostrar > 10 Then Break
Print "nº de emails: " & clave & " dirección: " & email
Next
Next
End
Dim valores As New String[]
Dim claves As New Integer[]
Dim email As String
Dim clave As Integer
Dim cantidadmostrar As Integer
'Las claves son la cantidad que ha enviado un grupo de usuarios
For Each valores In cemails
claves.Add(CInt(cemails.Key))
Next
claves.Sort(gb.Descent)
'Mostrar el top 10 de los usuarios que más se recibe/escriben
For Each clave In claves
For Each email In cemails[clave]
cantidadmostrar += 1
If cantidadmostrar > 10 Then Break
Print "nº de emails: " & clave & " dirección: " & email
Next
Next
End
Si no le ponía la condición cantidadmostrar, me mostraba todos. En este caso he usado dos bucles For Each y hay un Break en el caso
de que la cantidad a mostrar sea superior a 10, bien. Este break rompe los dos bucles. Cumple su función, pero no sabía que
rompiera también el bucle externo.
¿ Creéis que la salida del bucle es "brusca" ?. ¿ Debería haber usado un While ?.
Os muestro otros datos. Por ejemplo lo que almacena el array y la colección.
El array que almacena la cantidad de mails recibidos.
La colección que toma la cantidad de mail por claves y como valores un array.
El uso de colecciones y arrays es fundamental para el problema. Lo que si veo es que no puedo en gambas ordenar un array de array.
Cosa que en Python si se puede..de una manera sencilla me refiero.
Por ejemplo, edades y niños:
conjunto = [ [10,[Manolo, Pepe..], [4,[Antonio, Menganito...].....]
Saludos