Avatar billede para7 Nybegynder
14. maj 2003 - 10:04 Der er 8 kommentarer og
1 løsning

Sortering skal indbygges i funktion

Jeg har prøvet at indbygge en ellers udemærket bobbelsortering i en funktion, men hvordan egentlig og hvordan kalder jeg den, når jeg har et array lavet af en liste?

Liste = "Theodor¤Jørgen¤Åse¤Hans¤Anders¤Peter"
arrListe = split(Liste,"¤")

Function BubbleSort(arrBubbleSort)
    changed = true
  do while changed
    changed = false
    for i = 1 to ubound(arrBubbleSort)
      if arrBubbleSort(i-1) > arrBubbleSort(i) then
        tmp = arrBubbleSort(i-1)
        arrBubbleSort(i-1) = arrBubbleSort(i)
        arrBubbleSort(i) = tmp
        changed = true
      end if
    next
  loop
    arrBubbleSort(i) = arrBubbleSort
End Function
Avatar billede erikjacobsen Ekspert
14. maj 2003 - 10:14 #1
prøv
  BubbleSort(arrListe)

og udskriv så arrListe
Avatar billede para7 Nybegynder
14. maj 2003 - 11:06 #2
Er det sådandu mener:

BubbleSort(arrListe)

for each element in arrListe
    response.write element & "<br>"
next

resultat: Indekset er uden for området: 'i'

Jeg må indrømme jeg er ude at svømme ang. funktioner.
Avatar billede erikjacobsen Ekspert
14. maj 2003 - 11:20 #3
Du skal nok slette
  arrBubbleSort(i) = arrBubbleSort
og vente med at svømme til vandet bliver varmere
Avatar billede para7 Nybegynder
14. maj 2003 - 11:40 #4
Det er nu gjort, men der bliver ikke udskrevet noget..
Avatar billede erikjacobsen Ekspert
14. maj 2003 - 11:44 #5
Virker fint her (bemærk en lille ændring ... *g*):


Liste = "Theodor¤Jørgen¤Åse¤Hans¤Anders¤Peter"
arrListe = split(Liste,"¤")

Function BubbleSort(arrBubbleSort)
    changed = true
  do while changed
    changed = false
    for i = 1 to ubound(arrBubbleSort)
      if arrBubbleSort(i-1) > arrBubbleSort(i) then
        tmp = arrBubbleSort(i-1)
        arrBubbleSort(i-1) = arrBubbleSort(i)
        arrBubbleSort(i) = tmp
        changed = true
      end if
    next
  loop
End Function


BubbleSort arrListe

for each element in arrListe
    response.write element & "<br>"
next
Avatar billede para7 Nybegynder
14. maj 2003 - 12:02 #6
Nu er jeg endelig tilbage. Og din kode virker jo. Men jeg troede ikke man kunne kalde en funktion uden klammer?
Avatar billede erikjacobsen Ekspert
14. maj 2003 - 12:05 #7
Der skal ikke paranteser på et kald til en sub (og sådan bruger du din
funktion. Du bør lave den om til en sub)
Avatar billede para7 Nybegynder
14. maj 2003 - 12:13 #8
Dagens lektion er forstået. Tak for hjælpen. :) Her er så den færdige Sub afprøvet:

Liste = "Theodor¤Jørgen¤Åse¤Hans¤Anders¤Peter"
arrListe = split(Liste,"¤")

tidsListe = "09:30-09:45{Tid3¤09:15-09:30{Tid2¤19:45-20:00{Tid4¤10:00-10:15{Tid5¤10:45-11:00{Tid8¤10:15-10:30{Tid6¤10:30-10:45{Tid7¤09:00-09:15{Tid1¤"
arrTidsListe = split(tidsListe,"¤")

Sub BubbleSort(arrBubbleSort)
    changed = true
  do while changed
    changed = false
    for i = 1 to ubound(arrBubbleSort)
      if arrBubbleSort(i-1) > arrBubbleSort(i) then
        tmp = arrBubbleSort(i-1)
        arrBubbleSort(i-1) = arrBubbleSort(i)
        arrBubbleSort(i) = tmp
        changed = true
      end if
    next
  loop
End Sub

BubbleSort arrListe

for each element in arrListe
    response.write element & "<br>"
next

response.write "<br><br>"

BubbleSort arrTidsListe

for each element in arrTidsListe
    response.write element & "<br>"
next
Avatar billede erikjacobsen Ekspert
14. maj 2003 - 12:29 #9
Det stikker lidt dybere....Den helt rigtige forklaring er, at
sætter man paranteser omkring et udtryk, der buges som
parameter til en sub, så overføres den som call-by-value.
Og så får du ikke ændringer i arrayet tilbage.

BubbleSort (arrTidsListe)

Uden paranteser overføres som call-by-reference.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior projektkonsulent til program Digital og Operativ Transformation

Capgemini Danmark A/S

Client Partner

Forsvarets Efterretningstjeneste

Linux Infrastructure Specialist

Carl Ras A/S

Digital Tech Lead