Avatar billede dickie Nybegynder
16. januar 2004 - 14:36 Der er 5 kommentarer og
1 løsning

sortering af highscoreliste i lingo

nogen som kan forklare mig hvorfor dette ikke virker??

jeg har brug for at sortere det output jeg får fra en tekstfil

jeg opretter 2 lister gameScore, scoreNames
i den ene ligger navnene på folk i highscoren og den anden ligger deres highscore
nu skal jeg have sorteret dem sådan at den med højeste highscore ligger øverst

nogen der har nogle forslag til at løse dette problem??

on sortFunction(gameScore, scoreNames)
 
  gameScoreNum = count(gameScore)
  temp = 0
  put gameScoreNum
 
  repeat with i = gameScoreNum down to 2
    if (gameScore[i] < gameScore[i - 1]) then
      temp = gameScore[i]
      gameScore[i] = gameScore[i-1]
      gameScore[i - 1] = temp
      scoreNames[i] = scoreNames[i-1]
      i = i-1
    end if
  end repeat
sortetList = ""
  j = 1
  repeat while (j <= gameScoreNum)
    sortetList = sortetList & gameScore[j] & "-" & scoreNames[j] & RETURN
    j = j +1
  end repeat
  put sortetList
  return  sortetList
end sortFunction
Avatar billede dickie Nybegynder
16. januar 2004 - 14:37 #1
on sortFunction(gameScore, scoreNames)
 
  gameScoreNum = count(gameScore)
  temp = 0
  put gameScoreNum
 
  repeat with i = gameScoreNum down to 1
    if (gameScore[i] < gameScore[i - 1]) then
      temp = gameScore[i]
      gameScore[i] = gameScore[i-1]
      gameScore[i - 1] = temp
      scoreNames[i] = scoreNames[i-1]
      i = i-1
    end if
  end repeat
sortetList = ""
  j = 1
  repeat while (j <= gameScoreNum)
    sortetList = sortetList & gameScore[j] & "-" & scoreNames[j] & RETURN
    j = j +1
  end repeat
  put sortetList
  return  sortetList
end sortFunction


ups.. det var sådan det stod :)
Avatar billede hoejrup Nybegynder
16. januar 2004 - 14:47 #2
Har du prøvet at fjerne scoreNames[i] = scoreNames[i-1] ?

/per
Avatar billede dickie Nybegynder
16. januar 2004 - 14:54 #3
ja... men så tager den jo ikke alle forekomster i listen... lige nu har jeg en testliste med 4 entrys...
ved at gøre det du forslår bevæger den sig ikke videre til næste forekomst?

den siger list out of bounds.... både før og efter dit forslag
Avatar billede hoejrup Nybegynder
16. januar 2004 - 15:48 #4
on sortFunction(gameScore, scoreNames)

  gameScoreNum = count(gameScore)
  temp = 0
  put gameScoreNum

  repeat with i = gameScoreNum down to 1
    if (gameScore[i] < gameScore[i - 1]) then
      temp = gameScore[i]
      gameScore[i] = gameScore[i-1]
      gameScore[i-1] = temp
      temp1 = scoreNames[i]
      scoreNames[i] = scoreNames[i-1]
      scoreNames[i-1] = temp1
      i = i-1
    end if
  end repeat
sortetList = ""
  j = 1
  repeat while (j <= gameScoreNum)
    sortetList = sortetList & gameScore[j] & "-" & scoreNames[j] & RETURN
    j = j +1
  end repeat
  put sortetList
  return  sortetList
end sortFunction

/per
Avatar billede dickie Nybegynder
19. januar 2004 - 10:48 #5
nice per... hvis du opretter det som svar får du pointene... vi har godt nok selv fået løst problemet men det er netop på den måde du beskriver der :D
Avatar billede hoejrup Nybegynder
19. januar 2004 - 12:09 #6
Ok! Her er der et svar. :D

/per
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