norbat Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 Jeg prøver meg igjen I en listbox har jeg noen tall som er skrevet ut fra en matrise (kalles kanskje array - tabell?) Når jeg skal finne største/minste tall tenkte jeg at det er lurt å sortere tallene. Da vil man jo se raskt hvilket tall som er minst (øverst) og størst (nederst). Utfordringen var ikke så enkelt. Man skal bruke løkker for å hente ut det minste og det største tallet fra matrisen. Da står jeg fast....... Lenke til kommentar
iobas Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 les om bubble sort. det er en enkel sorteringsalgoritme Lenke til kommentar
GeirGrusom Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 Bubblesort er så enkel at du kan tenke deg til hvordan den fungerer. Dim iList() As Long Public Sub SortList(ByRef lst() As Long) Dim X As Long Dim Incident As Boolean Dim start As Long Dim endlist AS Long Dim tmp As Long start = LBound(lst) endlist = UBound(lst) Do Incident = False For X = start To endlist - 1 ' Sort ascending ' Swap if value1 is greater than value2 If lst(X) > lst(X + 1) Then tmp = lst(X + 1) lst(X + 1) = lst(X) lst(X) = tmp Incident = True End If Next X Loop While Incident End Sub Lenke til kommentar
norbat Skrevet 12. oktober 2004 Forfatter Del Skrevet 12. oktober 2004 Er enig i at boblesortering vil funke, men hvis man ikke skal bruke sortering!?, finnes det noen andre måter? Ser for meg at prog går gjennom tallene som ligger i matrisen og ut fra det finner minste/største tall. Er det mulig uten noen form for sortering? Lenke til kommentar
iobas Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 ja. men du sa i den første posten at du skulle sortere. uansett, det er bare å gå gjennom og sette det største tallet til 0 f.eks. hvis du finner et tall som er større setter du bare det største tallet til det det er ganske trivielt egentlig. Lenke til kommentar
Rescudo Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 Koden til GeirGrusom sorterer ikke så vidt jeg ser. Lenke til kommentar
norbat Skrevet 12. oktober 2004 Forfatter Del Skrevet 12. oktober 2004 Hei Ja, jeg nevnte sortering og har brukt array.sort........Noe som fungerte greit. Utfordringer var imidlertid å lage et prog som ikke brukte sortering. Det iobas nevner over høres interessant ut. Hvordan lager man koden for dette hvis tall(2) er størst (av totalt 5 tall). Må ha inn med teskje Lenke til kommentar
b-urn Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 (endret) Hvis alt man skal er å finne høyest/lavest tall i en liste... er det vel simplere .. å hoppe bukk over hele sorterings-idéen vil jeg tro. Eks. Dim lng_Data(5) As Long lng_Data(0) = 12 lng_Data(1) = -2 lng_Data(2) = 4 lng_Data(3) = 80 Dim lngLow Dim lngHigh lngHigh = -2147483648# lngLow = 2147483647 For Each lngValue In lng_Data If lngValue > lngHigh Then lngHigh = lngValue If lngValue < lngLow Then lngLow = lngValue Next Edit: korrigert navnsetting i kode Endret 12. oktober 2004 av b-urn Lenke til kommentar
norbat Skrevet 12. oktober 2004 Forfatter Del Skrevet 12. oktober 2004 Hei Dette fungerte jo glimrende. Lurer på to ting: Hvis det ikke ligger noen neg.tall vil laveste tall bli 0 (selv om tallet er ex.2) Hva betyr intHigh = -21......# intLow = 21........ (Må nevna at jeg bruker vb.net og når det står # bak hightallene blir tallet -21...48.0#) Lenke til kommentar
b-urn Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 (endret) Vel i VB.net kan du skrive det slik: Dim int_Data(4) As Integer int_Data(0) = 12 int_Data(1) = -2 int_Data(2) = 4 int_Data(3) = 80 Dim intLow = Integer.MaxValue Dim intHigh = Integer.MinValue Dim intValue As Integer For Each intValue In int_Data If intValue > intHigh Then intHigh = intValue If intValue < intLow Then intLow = intValue Next Blir kanskje litt klarere da? Ikke? Variabelen intLow initieres med den høyeste verdien den kan inneholde. Det gjøres for å sikre at variabelen blir oppdatert med (minst et av) tallene i listen. Alle tall i listen må være mindre enn (eller lik) den høyeste verdien variabelen kan inneholde. (Tilsvarende for intHigh) Eks: Anta at intLow settes til 0 til å begynne med. Anta at man har en liste med verdiene: 1,2,3,4 og 5 Sammenlikningen If intValue < intLow Then intLow = intValue vil da aldri slå til. Verdien av intLow forblir 0, selv om laveste verdi skal være 1. OT: IMO hadde det vært en fordel om det ble opprettet forskjellige kategorier for VB.net og VB6. Alternativt at det innarbeides rutine for å angi slik info i første post/emnefelt. Mja vet det finnes en .NET kategori... men VB-spørsmål har (naturligvis?) en tendens til å havne i Visual Basic kategorien, enten det er snakk om 6.0 eller .NET Edit: Korrigert forklaring en smule (for ordens skyld) Endret 12. oktober 2004 av b-urn Lenke til kommentar
norbat Skrevet 12. oktober 2004 Forfatter Del Skrevet 12. oktober 2004 Tusen takk for hjelpen En ting. Hvis det kun er +tall i lista vil det i utskrifta skrives 0 som laveste tall selv om tallet er f.eks 2. Er det noen løsning på dette? Lenke til kommentar
b-urn Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 (endret) Oops... min feil (listen inneholder et element for mye) Forandre Dim int_Data(4) As Integer til Dim int_Data(3) As Integer Endret 12. oktober 2004 av b-urn Lenke til kommentar
norbat Skrevet 12. oktober 2004 Forfatter Del Skrevet 12. oktober 2004 Tusen takk for flott hjelp. Skjønner ikke hvor du tar det fra, men det er vel bare en ting å gjøre - skrive kode, kode, kode til man skjønner hva man holder på med Lenke til kommentar
aadnk Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 OT: IMO hadde det vært en fordel om det ble opprettet forskjellige kategorier for VB.net og VB6. Alternativt at det innarbeides rutine for å angi slik info i første post/emnefelt. Mja vet det finnes en .NET kategori... men VB-spørsmål har (naturligvis?) en tendens til å havne i Visual Basic kategorien, enten det er snakk om 6.0 eller .NET Er fullstendig enig med deg. Spørsmål angående VB legges alltid i denne kategorien, selv om VB.NET muligens burde blitt lagt i denne. Derfor burde noen ta intiativet og skrive en sticky om det å informere om versjon og hva du ønsker. Jeg tror det ville spart alle parter for unødige misforståelser. Lenke til kommentar
norbat Skrevet 12. oktober 2004 Forfatter Del Skrevet 12. oktober 2004 Hei Jeg er også helt enige med dere. Så selv om jeg begynte å like meg her skal jeg heretter poste i .NET programmering. Takker forøvrig for all hjelp. Kjempegjeng dere! Lenke til kommentar
Vain Skrevet 12. oktober 2004 Del Skrevet 12. oktober 2004 Spørsmål angående VB legges alltid i denne kategorien, selv om VB.NET muligens burde blitt lagt i denne. Derfor burde noen ta intiativet og skrive en sticky om det å informere om versjon og hva du ønsker. Jeg tror det ville spart alle parter for unødige misforståelser. Enig jeg og. La oss rope på en moderator! :!: Lenke til kommentar
b-urn Skrevet 13. oktober 2004 Del Skrevet 13. oktober 2004 Jeg er også helt enige med dere. Så selv om jeg begynte å like meg her skal jeg heretter poste i .NET programmering. Synes egentlig du burde fortsett å poste i VB-kategorien jeg. Dt er liksom så mye plunder å rote gjennom 100-vis av ASP.NET spørsmål i .NET kategorien.... når det er VB man er interessert i å lese om/svare på. Da er det bedre å bare merke Emne (eks. "Finne største/minste tall (VB.NET)" ) eller bare angi det i første post. Lenke til kommentar
d0ppler Skrevet 13. oktober 2004 Del Skrevet 13. oktober 2004 (endret) har ikke lest hele traaden, men her er to helt greie funksjoner som returnerer den hoyste og laveste verdien i en ListBox. private function GetMin(MyListBox as ListBox) as long dim i as long dim minval as long minval = MyListBox.listindex(0) for i = 0 to MyListBox.ListCount step 1 if clng(MyListbox.listindex(i)) < minval then minval = clng(MyListbox.listindex(i)) next i GetMin = minval end function private function GetMax(MyListBox as ListBox) as long dim i as long dim maxval as long maxval = MyListBox.listindex(0) for i = 0 to MyListBox.ListCount step 1 if clng(MyListbox.listindex(i)) > maxval then maxval = clng(MyListbox.listindex(i)) next i GetMax = maxval end function OBS, har ikke vb paa maskinen jeg sitter paa naa, og er usikker paa om det er .index som er navnet paa funksjonen til Listboksen. Uansett, det er ihvertfall den funksjonen som returnerer verdien til en gitt index i en listboks. EDIT : endret til ListIndex, takk GeirGrusom Endret 13. oktober 2004 av dga01 Lenke til kommentar
GeirGrusom Skrevet 13. oktober 2004 Del Skrevet 13. oktober 2004 opix: Koden min sorterer, hvis det første tallet er større en det minste, swap tallene. Det er ikke .index, det er .ListIndex, .index har med kontroll arrayer å gjøre. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå