NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Karel Mašek
Člen
Avatar
Karel Mašek:31.10.2017 16:08

Ahoj, poraďte mi někdo, proč to nefunguje.
Děkuji za odpověď.

For i = 0.5 To 20.5
TextWindow.Wri­teLine(Math.Rou­nd(i))
EndFor

 
Odpovědět
31.10.2017 16:08
Avatar
Petr Kouřil
Tvůrce
Avatar
Petr Kouřil:31.10.2017 16:48

Ahoj, co Ti na tom nefunguje? Math.Round zaokrouhluje na nejbližší sudé číslo (čili 0, 2, 4, atd.). Nejsem si jistý jestli příkaz For bere desetinná čísla. V jakých číselných odstupech chceš ta čísla používat? Možná by bylo lepší použít cyklus while. Tady je příklad, kde se i na začátku naplní počáteční hodnotou a inc se naplní přírůstkem, o který se bude i při každém kroku cyklu zvětšovat:

i = 0.5
inc = 0.5
While (i < 21)
  TextWindow.WriteLine(Math.Round(i))
  i = i + inc
EndWhile
Nahoru Odpovědět
31.10.2017 16:48
Cokoliv děláš má smysl i když to tak na první pohled nevypadá.
Avatar
Karel Mašek
Člen
Avatar
Odpovídá na Petr Kouřil
Karel Mašek:1.11.2017 8:36

Ahoj,
Math.Round zaokrouhluje na celé číslo, avšak chybně při hodnotách 0.5; 2.5; 4.5; atd.

For i = 0 To 5 Step 0.1
TextWindow.Wri­teLine(i + "," + Math.Round(i))
EndFor

Programuji ruletu a chtěl jsem rozpoznat sudé a liché čísla. Hledal jsem vhodný příkaz a tento nemůžu použít. Tak jsem to vymyslel zatím takto.

For i = 1 To 20
a = Math.GetRandom­Number(37) - 1
b = Math.Floor(a/2)
c = Math.Ceiling(a/2)
TextWindow.Write(a + " , ")
If a = 0 Then
TextWindow.Wri­teLine("nula")
ElseIf b = c Then
TextWindow.Wri­teLine("sudá")
Else
TextWindow.Wri­teLine("lichá")
EndIf
EndFor

 
Nahoru Odpovědět
1.11.2017 8:36
Avatar
Petr Kouřil
Tvůrce
Avatar
Petr Kouřil:24.11.2017 13:17

No, tady by šel pro celá čísla s výhodou využít příkaz Remainder, čili zbytek po dělení:

zbytek = Math.Remainder(number,2)

Pokud se číslo vydělí dvěma, tak zbytek je vždy 0 pro sudé číslo a 1 pro liché.

Tady je na to příklad na Youtube.

Nahoru Odpovědět
24.11.2017 13:17
Cokoliv děláš má smysl i když to tak na první pohled nevypadá.
Avatar
Karel Mašek
Člen
Avatar
Karel Mašek:24.11.2017 13:35

Ano, Math.remainder je ideální. Nakonec jsem to naprogramoval přesně jako v tom videu.
A ten příkaz MathRound je k ničemu.

 
Nahoru Odpovědět
24.11.2017 13:35
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.