Chyba v generačnom kóde v ľubovoľnom poradí od 1 po 5

Programovacie jazyky, rady, poradňa...
redge
Light Star
Light Star
Príspevky: 287
Registrovaný: 09 feb 2011, 11:16

Chyba v generačnom kóde v ľubovoľnom poradí od 1 po 5

Príspevok od používateľa redge »

Prosím, nevie niekto nájisť chybu v tomto generačnom programe vo VB?

Kód: Vybrať všetko

Dim key As Integer

        For i As Integer = 0 To 4
            key = Int(Rnd() * 4)
            Select Case key
                Case 0
                    If TextBox1.Text = "1" Then

                        Do Until TextBox1.Text <> "1"
                            key = Int(Rnd() * 4)
                        Loop
                    Else
                        TextBox1.Text = "1"
                    End If

                Case 1

                    If TextBox1.Text = "2" Then

                        Do Until TextBox1.Text <> "2"
                            key = Int(Rnd() * 4)
                        Loop
                    Else
                        TextBox1.Text = "2"
                    End If

                Case 2

                    If TextBox1.Text = "3" Then

                        Do Until TextBox1.Text <> "3"
                            key = Int(Rnd() * 4)
                        Loop
                    Else
                        TextBox1.Text = "3"
                    End If

                Case 3

                    If TextBox1.Text = "4" Then

                        Do Until TextBox1.Text <> "4"
                            key = Int(Rnd() * 4)
                        Loop
                    Else
                        TextBox1.Text = "4"
                    End If

                Case 4

                    If TextBox1.Text = "5" Then

                        Do Until TextBox1.Text <> "5"
                            key = Int(Rnd() * 4)
                        Loop
                    Else
                        TextBox1.Text = "5"
                    End If

            End Select
            ListBox1.Items.Add(TextBox1.Text)
        Next i
Pri spustení sa mi vypisuje Not responding.
Dik.
manager666
Star
Star
Používateľov profilový obrázok
Príspevky: 642
Registrovaný: 12 aug 2007, 13:29

Re: Chyba v generačnom kóde v ľubovoľnom poradí od 1 po 5

Príspevok od používateľa manager666 »

Mas tam nie jeden, ale niekolko nekonecnych cyklov :lol: Prelozim ti jeden cyklus do slovenciny:

Kód: Vybrať všetko

Do Until TextBox1.Text <> "1"
key = Int(Rnd() * 4)
Loop

je ekvivalentne:

Priraduj premennej key nahodnu hodnotu od 0 po 3 dovtedy, pokial hodnota TextBox1.Text bude "1".
Kde je v tele cyklu zabezpecene, ze TextBox1.Text bude mat niekedy hodnotu inu ako 1 a tym padom sa ukonci cyklus? Nikde... :roll: (A kedze tam nemas ani pouzite volanie metody Application.DoEvents(), takze ani ako uzivatel sa nedostanes k zadavaniu nejakej hodnoty do TextBoxu)
Celkovo ti odporucam vyhnut sa konstrukciam cyklov typu "Do Until" a namiesto nich pouzivaj "Do While", ktory je jednoduchsie pochopitelny.
pipiak
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 321
Registrovaný: 11 jún 2006, 9:24
Bydlisko: KE
Kontaktovať používateľa:

Re: Chyba v generačnom kóde v ľubovoľnom poradí od 1 po 5

Príspevok od používateľa pipiak »

A pokial su to vypocty, pripadne cykly dlhotrvace tak si vytvor novy thread, pripadne pre teba bude jednoduchsie pouzit komponentu background worker.
redge
Light Star
Light Star
Príspevky: 287
Registrovaný: 09 feb 2011, 11:16

Re: Chyba v generačnom kóde v ľubovoľnom poradí od 1 po 5

Príspevok od používateľa redge »

Dik.
Napísať odpoveď