Diskuze: VB - hody kostkou, dokud nepadne šest
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Co dělá výše, uvedený program? VB neummím, dělám v C, ale mohl bych pomoci.
Ahoj,
teď to máš řešené tak, že další iterace cyklu Do se provede pouze v případě, že hod kostky se bude rovnat 6. Takže upravit, aby cyklus se provedl pouze v případě, kdy hod kostky nebude 6. Pokud bude 6, cyklus dál nebude pokračovat a kód se bude provádět dál. Takže něco ve smyslu:
Do
kostka = Round (Rnd() * 5) + 1
ret = ret + Chr(10) + Str (kostka)
i = i + 1
Loop While kostka <> 6
Co koukám na dokumentaci k cyklu na stránkách Microsoftu , stačilo by možná nahradit While za Until:
Do
kostka = Round (Rnd() * 5) + 1
ret = ret + Chr(10) + Str (kostka)
i = i + 1
Loop Until kostka = 6
Tu kostku máte oba špatně, máte ji "cinknutou" (málo hází 1 a 6 oproti ostatním číslům), správně ji je potřeba udělat takto:
Dim MyValue As Integer
MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6.
To je snadne overit tabulkou pro krajni meze, zda to vychazi spravne
Je jedno jestli pouzijes floor (INT) nebo round. Ale INT to prevadi na integer,
to muze byt sikovnejsi pro dalsi zpracovani.
volim levou cast, stred a pravou cast, excel meze=1/6-0,0001 a 1/6+(1/6)/2 a 1/6+0,0001
Round (Rnd() * 5) + 1 || Int((6 * Rnd) + 1) || excel =ZAOKROUHLIT(A1*5;0)+C1 || =CELÁ.ČÁST(A1*6+C1)
0 0 1 | 0 0 1
0,083333333 0,416666667 1 | 0,083333333 0,5 1
0,166566667 0,832833333 2 | 0,166566667 0,9994 1
0,166766667 0,833833333 2 | 0,166766667 1,0006 2
0,25 1,25 2 | 0,25 1,5 2
0,333233333 1,666166667 3 | 0,333233333 1,9994 2
0,333433333 1,667166667 3 | 0,333433333 2,0006 3
0,416666667 2,083333333 3 | 0,416666667 2,5 3
0,4999 2,4995 3 | 0,4999 2,9994 3
0,5001 2,5005 4 | 0,5001 3,0006 4
0,583333333 2,916666667 4 | 0,583333333 3,5 4
0,666566667 3,332833333 4 | 0,666566667 3,9994 4
0,666766667 3,333833333 4 | 0,666766667 4,0006 5
0,75 3,75 5 | 0,75 4,5 5
0,833233333 4,166166667 5 | 0,833233333 4,9994 5
0,833433333 4,167166667 5 | 0,833433333 5,0006 6
0,916666667 4,583333333 6 | 0,916666667 5,5 6
0,9999 4,9995 6 | 0,9999 5,9994 6
1,0001 5,0005 6 | 1,0001 6,0006 7
Cili, je videt, ze v prvnim pripade pri hodnote 0,166566667 mela byt jednicka a uz je tam dvojka. A take by tam nemelo byt, ze pro 1,0001 vychazi 6.
Zobrazeno 6 zpráv z 6.