Verfasst: 24.10.2006 15:47
Hi Hermann!
Ich hab deinen Code mal fast komplett geändert.
Schau mal, ob du damit zurecht kommst und du es genauso einfach findest
wie ich.
Ich hab deinen Code mal fast komplett geändert.
Schau mal, ob du damit zurecht kommst und du es genauso einfach findest
wie ich.
Code: Alles auswählen
; in der Variablen "zaehlertaxi" steht die Anzahl der Datensätze aus denen die Top 3 ermittelt werden soll
; in dem Arry "taxi_haltestelle(n)" jeweils ein Name der Haltestelle, dieser NAme kommt z.T. mehrfach vor
zaehlertaxi = 9
Dim taxi_haltestelle.s(zaehlertaxi)
taxi_haltestelle(0) = "Friedrichstraße" ;3
taxi_haltestelle(1) = "Hubertusweg" ;4
taxi_haltestelle(2) = "Obere Allee" ;2
taxi_haltestelle(3) = "Hubertusweg"
taxi_haltestelle(4) = "Sauerlandgasse"
taxi_haltestelle(5) = "Friedrichstraße"
taxi_haltestelle(6) = "Obere Allee"
taxi_haltestelle(7) = "Hubertusweg"
taxi_haltestelle(8) = "Friedrichstraße"
taxi_haltestelle(9) = "Hubertusweg"
;Struktur für Haltestellemname und Häufigkeit
Structure Haltestelle
Name.s
Anzahl.l
EndStructure
;Liste mit allen verschiedenen Haltestellen
NewList liste.Haltestelle()
For i = 0 To zaehlertaxi
ja = 1
ForEach liste()
If liste()\Name = taxi_haltestelle(i) ;Wenn Haltestelle schon in liste() ist, erhöhe die Anzahl
liste()\Anzahl + 1
ja = 0
Break
EndIf
Next
If ja ;Wenn Haltestellen nicht gefunden wurd, dann erstelle sie
AddElement(liste())
liste()\Name = taxi_haltestelle(i)
liste()\Anzahl = 1
EndIf
Next
;Sortiere die Liste (liste()) absteigend (1) nach der Häufigkeit (OffsetOf(Haltestelle\Anzahl))
SortStructuredList(liste(), 1, OffsetOf(Haltestelle\Anzahl), #PB_Sort_Long)
Debug "Es gibt " + Str(CountList(liste())) + " verschiedene Haltestellen."
;Ordne die Top 3 den passenden Variablen zu
Define top1s.s, top2s.s, top3s.s
If FirstElement(liste()) ;Pass auf, dass die Liste nicht leer ist...
top1s = liste()\Name
top1 = liste()\Anzahl
EndIf
If NextElement(liste()) ;...und auch das nächste...
top2s = liste()\Name
top2 = liste()\Anzahl
EndIf
If NextElement(liste()) ;...und übernächste Element existiert.
top3s = liste()\Name
top3 = liste()\Anzahl
EndIf
;Gib die Top 3 aus
MessageRequester("test", top1s + " " + Str(top1))
MessageRequester("test", top2s + " " + Str(top2))
MessageRequester("test", top3s + " " + Str(top3))