Avatar billede slejpnir Nybegynder
16. april 2006 - 16:19 Der er 9 kommentarer og
1 løsning

randomize i textboxe men ikke gentagelse af tal

Jeg har nedenstående kode, der er helt perfekt. Desværre får jeg
gentagelse af samme tal i de forskellige textboxe.
Hvordan skal koden se ud, hvis man skal undgå det?
Private Sub Command1_Click()
Text1 = Int((100 * Rnd) + 1)
Text2 = Int((100 * Rnd) + 1)
Text3 = Int((100 * Rnd) + 1)
Text4 = Int((100 * Rnd) + 1)
Text5 = Int((100 * Rnd) + 1)
Text6 = Int((100 * Rnd) + 1)
End Sub
Avatar billede mitbrugernavn Praktikant
16. april 2006 - 17:09 #1
Private Sub Command1_Click()
Text1 = Int((100 * Rnd) + 1)
Text2 = Int((101 * Rnd) + 1)
Text3 = Int((102 * Rnd) + 1)
Text4 = Int((103 * Rnd) + 1)
Text5 = Int((104 * Rnd) + 1)
Text6 = Int((105 * Rnd) + 1)
End Sub

prøv det
Avatar billede slejpnir Nybegynder
16. april 2006 - 18:31 #2
Hm, det kan jeg ikke rigtig se skulle være løsningen. Hvordan kan en forhøjelse af tallene fra 100 til 105 forhindre gentagelse af det samme vilkårlige tal?
Avatar billede dar86 Nybegynder
16. april 2006 - 18:47 #3
Private Sub Command1_Click()
Randomize
Text1 = Int((100 * Rnd) + 1)
Text2 = Int((100 * Rnd) + 1)
Text3 = Int((100 * Rnd) + 1)
Text4 = Int((100 * Rnd) + 1)
Text5 = Int((100 * Rnd) + 1)
Text6 = Int((100 * Rnd) + 1)
End Sub

og så skulle det gerne virke :)
Avatar billede slejpnir Nybegynder
16. april 2006 - 20:01 #4
>dar86 Ja, jeg glemte at kopiere randomize med i koden. Men det er ikke det, der er problemet. Problemet er, at der ikke må opstå det samme tal i nogen af tekstboksene, og der er intet i ovennævnte kode, der forhindrer det.
Avatar billede dar86 Nybegynder
16. april 2006 - 20:13 #5
Private Brugtetal(100)

Private function NytTal()

tal = Int((100 * Rnd) + 1)
if Brugtetal(tal) = 1 then
    NytTal = NytTal()
else
    NytTal = tal
    Brugtetal(tal) = 1
end if
end function


Private Sub Command1_Click()
Randomize
Text1 = NytTal()
Text2 = NytTal()
Text3 = NytTal()
Text4 = NytTal()
Text5 = NytTal()
Text6 = NytTal()
End Sub
Avatar billede dar86 Nybegynder
16. april 2006 - 20:14 #6
Har lavet så den kontrollerer om tallet er brugt før og hvis det er får den et nyt
Avatar billede slejpnir Nybegynder
16. april 2006 - 21:14 #7
>dar86 Det ser ud til at virke. Men når jeg prøver programmet flere gange efter hinanden kommer der en meddelelse: "out of stack space" og "nyttal = nyttal()"
bliver highlightet. Hvad kan der gøres ved det?
Avatar billede dar86 Nybegynder
16. april 2006 - 21:26 #8
Private Brugtetal(100)

Private Function NytTal()
tal = Int((100 * Rnd) + 1)
If Brugtetal(tal) = 1 Then
    NytTal = NytTal()
Else
    NytTal = tal
    Brugtetal(tal) = 1
End If
End Function
Private Sub sletarr()
For i = i To 100
    Brugtetal(i) = ""
Next
End Sub

Private Sub Command1_Click()
Randomize
Text1.Text = NytTal()
Text2.Text = NytTal()
Text3.Text = NytTal()
Text4.Text = NytTal()
Text5.Text = NytTal()
Text6.Text = NytTal()
sletarr
End Sub

Arrayet med brugte tal skulle lige nulstilles :)
Avatar billede slejpnir Nybegynder
16. april 2006 - 22:45 #9
>dar86 Så fungerer det helt perfekt. Mange tak for hjælpen.
Avatar billede dar86 Nybegynder
16. april 2006 - 23:13 #10
Super..

Det var da så lidt.
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