Break


Objetivo: Break
Hola!.

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


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.

capturatop10emails

¿ 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.

cantidademails

La colección que toma la cantidad de mail por claves y como valores un array.

claveyvalor

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

última edición por Shell el Jueves, 14 Enero 2016, 20:38; editado 1 vez
Objetivo: Re: Break
¿cemails no sale de una base de datos? Si es así, con hacer la consulta ordenada, todo pre-solucionado ¿no?

Perfil MP  
Objetivo: Re: Break
Citar:

¿cemails no sale de una base de datos? Si es así, con hacer la consulta ordenada, todo pre-solucionado ¿no?


No, no era una base de datos. Los datos se leían de un archivo texto. Un log (recortado ) que se había generado con un cliente de correo.

Era un ejercicio que hicimos en un curso de Python en el que se veía la utilidad que tienen los diccionarios (colecciones) para estos temas.
Y fue muy interesante.

Con ese mismo log, estuvimos practicando expresiones regulares y se hicieron ejercicios varios.

Saludos

Objetivo: Re: Break
Ahhh...

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.6555s (PHP: -85% SQL: 185%)
Consultas SQL: 46 - Debug off - GZIP Activado