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
Dim paises As String[] = ["ALEMANIA", "ALEMANIA", "RUSIA", "LITUANIA", "ESPAÑA", "HOLANDA", "ESPAÑA", "ALEMANIA", "RUSIA", "FRANCIA", "LITUANIA", "ESPAÑA"]
MostrarSinRepeticion(SinRepes(paises))
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: | 24 veces |
Repes.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Repes.tar.gz | |
Tamaño: | 4.93 KB | |
Descargado: | 24 veces |
Repes.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | Repes.tar.gz | |
Tamaño: | 4.93 KB | |
Descargado: | 24 veces |