If v kombinaci s Mod - jak to funguje?   zodpovězená otázka

VB.NET

Ahoj, momentálně nemám přístup k PC a proto se chci se na něco zeptat

Dim i As Integer = 0
While podmínka
í += 1
If i Mod 1 Then
' Příkazy
ElseIf i Mod 2
' Příkazy
ElseIf i Mod 3
' Vypsat stav
End if
...

Můj dotaz zní - pokud je proměnná i třeba 6, splní se příkazy ve všech Ifech, nebo jen ten poslední? Jde o to, že se mi nesmějí splnit všechny příkazy, ale jen ten poslední blok, pokud je i 3,6,9,12,15... Půjde to takto, nebo se na to musí jinak? Díky

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

U konstrukce If...ElseIf...ElseIf...End If se vždy splní první podmínka, která vyhovuje, ostatní se ignorují.

Pokud chcete splnit všechny, udělejte je jako samostatné IFy za sebou. Pokud chcete splnit jen poslední, uveďte podmínky v obráceném pořadí (nejdřív Mod 3, pak Mod 2 atd.).

Dělat Mod 1 je úplně zbytečné, vždycky to vrátí 0 a podmínka se nikdy nesplní.

A mimochodem podmínka by měla být typu Boolean, ale vy tam cpete Int. i Mod 2 dá výsledek typu Int, vy chcete Boolean.

Mod vrací zbytek, to znamená i je dělitelné 2, pokud i Mod 2 = 0. A tohle musíte testovat.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, až budu na PC, obrátím to.

Jen mi není jasné, proč říkáte, že se tam hodí Boolean, když jsou 3 podmínky, ne jen 2 (na true a false), tudíž by musely být 2 Booleany a to se mi zdá zbytečné.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jelikož podmínky testují Boolean tak to musí být třeba takto:

If i Mod 2 = něco

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslel jsem, že to půjde i takto, podmínky totiž měly zjistit, zda je i dělitelné daným číslem a podle toho plnit úkoly :). Pak toto úplně překopu

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback