Avatar billede jonas_h Nybegynder
02. november 2005 - 19:04 Der er 5 kommentarer

Funktion som returnerer "modstander-array".

Jeg er kørt helt død i en del af et system...

Det handler om, at der går x antal brugere videre fra en runde i et spil. Jeg skal så have lavet en funktion, som returnerer et array, som er struktureret på følgende måde:
arrOpponents(i) = j. Dvs. bruger nr. i skal spille mod bruger nr. j næste runde... Skal selvfølgelig været tilfældigt genereret, og par må ikke gå igen. Dvs. der må ikek eksistere en arrOpponents(j) = i...

Arrayet er nødt til, at være opbygget så de x/2 første brugere er som indeks og de resterende x-(x/2) brugere er gemt i arrayet, da jeg ellers iikke ved hvordan det skal "bruges" når det er blevet returneret.

Håber I forstår hvad jeg mener :)
Avatar billede jonas_h Nybegynder
02. november 2005 - 19:27 #1
Og det skal lige siges, at hvis der skal gå f.eks. 8 videre, er brugere nummereret 0...7
Avatar billede plx Nybegynder
02. november 2005 - 19:37 #2
Prøv dette

Function ModstanderArray(AntalSpillere)
    Dim a,b,t,n,arr

    n = AntalSpillere/2
    ReDim arr(n-1)

    ' fyld array
    For i=o To n-1
        arr(i) = n+i
    Next

    ' bland
    For i=0 To n-1
        a = Int(n * Rnd())
        b = Int(n * Rnd())
        t = arr(a)
        arr(a) = arr(b)
        arr(b) = t       
    Next

    ModstanderArray = arr
End Function

Randomize
f = ModstanderArray(12)

For i=0 To UBound(f)
    Response.Write "array(" & i & ") = " & f(i) & "<br>"
Next
Avatar billede jonas_h Nybegynder
02. november 2005 - 20:07 #3
Jamen det virker jo :)
Men jeg er ikke lige vant til at sætte mig ind i andres kode, så kan du ikke prøve at forklare mig, hvad 'bland gør?
Og hvordan kan den returnere et array med et indeks på 5, når det i funktionen bliver defineret som et på 11?

Du kan bare skrive et svar, så skal du nok få point.
Avatar billede plx Nybegynder
02. november 2005 - 23:24 #4
ReDim arr(n-1)
angiver ikke antallet af elementer, men upperbound. I dette tilfælde går den så fra 0..11 (12 pladser)

bland:
a og b er to tilfældige tal mellem 0..antal/2-1
pladserne a og b i arrayet bytter plads.
Dette gøres et vist antal gange, resultat: arrayet bliver blandet.
Avatar billede plx Nybegynder
02. november 2005 - 23:26 #5
0..11 var måske lidt overdrevet. n og jo kun halvdelen, 0..5
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