Mostrar Elementos Sin Repetición Y Mostrar Repetidos Contandolos


Objetivo: Mostrar Elementos Sin Repetición Y Mostrar Repetidos Contandolos
Hola!.

1º - El ejemplo muestra los elementos de un array sin volver a mostrar los elementos ya mostrados
2º - Mostrar los elementos y el número de veces que se repiten

Tenemos una lista de países y queremos que nos muestre los países sin que se repitan al mostrarlos y queremos también que nos diga las veces
que se repiten los países.

Public Sub Main()

Dim paises As String[] = ["ALEMANIA", "ALEMANIA", "RUSIA", "LITUANIA", "ESPAÑA", "HOLANDA", "ESPAÑA", "ALEMANIA", "RUSIA", "FRANCIA", "LITUANIA", "ESPAÑA"]

MostrarSinRepeticion(SinRepes(paises))
Print
MostrarRepetidos(CuentaRepetidos(paises))

End

Public Sub MostrarSinRepeticion(lista As String[])

Dim elemento As String

For Each elemento In lista
Print elemento
Next

End

Public Sub MostrarRepetidos(lista As Collection)

Dim elemento As String

For Each elemento In lista
Print lista.key & ": " & lista[lista.key]
Next

End

Public Function SinRepes(lista As String[]) As String[]

Dim elemento As String
Dim no_repetidos As New String[]

For Each elemento In lista
If no_repetidos.Find(elemento) = -1 Then
no_repetidos.Add(elemento)
Endif
Next
Return no_repetidos

End

Public Sub CuentaRepetidos(lista As String[]) As Collection

Dim lista_repes As New Collection
Dim x, y As Integer

For x = 0 To lista.Max
If Not lista_repes.Exist(lista[x]) Then
lista_repes[lista[x]] = 0
For y = x + 1 To lista.Max
If lista[x] = lista[y] Then lista_repes[lista[x]] += 1
Next
Endif
Next
Return lista_repes

End


¿ Qué mejoras añadirías al código ?.

Un día lo haré en Python, en este existen los sets que sería como un array que no permite elementos repes.
Ya veis que tampoco fue difícil hacer algo similar en Gambas.

Saludos


Repes.tar.gz
Descripción:  
Descargar
Nombre del archivo: Repes.tar.gz
Tamaño: 4.93 KB
Descargado: 25 veces
Repes.tar.gz
Descripción:  
Descargar
Nombre del archivo: Repes.tar.gz
Tamaño: 4.93 KB
Descargado: 25 veces
Repes.tar.gz
Descripción:  
Descargar
Nombre del archivo: Repes.tar.gz
Tamaño: 4.93 KB
Descargado: 25 veces

Objetivo: Re: Mostrar Elementos Sin Repetición Y Mostrar Repetidos Contandolos
mah.... me parece que el tu codigo es esencial bastante.
21

última edición por vuott el Sabado, 22 Noviembre 2014, 14:17; editado 1 vez
Perfil MP  
Objetivo: Re: Mostrar Elementos Sin Repetición Y Mostrar Repetidos Contandolos
Vuott:

Me alegro que te resulte interesante.

Estoy haciendo una pequeña aplicación muy simple para el trabajo. Me sirve de repaso.

Tengo un archivo de texto donde existen entradas de clientes de un año, de distintos países.
Como los países son distintos y repetidos tenía que saber:

- De que países son los clientes que aparecen en cada registro del archivo de texto. Sin que se repitiesen
- Conociendo los países podía crear una lista.
- Esta lista sin repeticiones y ordenada me serviría para usarla en un combobox y seleccionar clientes por país.

Es mejor que tener que escribir el nombre del país y usar la tecla Enter o Return o hacer clic en un botón.
Así que he usado el evento Change del combobox y los registros se muestran por cada país seleccionado en este.

Ahora como ya se como contar de cada elemento los repetidos. ( Los países ).
Puedo saber cuantos viajeros y de que países me visitaron.

Se que estas cosas se hacen con SQL, pero como estoy con prácticas con archivos de texto, me pareció
una buena opción.

Así que dejando la aplicación principal me puse a jugar con otra para averiguar como se hacía otra cosa.
Y esta fue una posible solución.

viajerosporpaises

Saludos

última edición por Shell el Sabado, 22 Noviembre 2014, 18:41; editado 1 vez

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.1185s (PHP: -24% SQL: 124%)
Consultas SQL: 26 - Debug off - GZIP Activado