Hej Fast det där beskrev ekvivalensrelationen modulo och sade inte så mycket om vad operatorn MOD (i C-språk: %) gör. Per:s svar är heltäckande.Kände för att komma med ett litet tillägg.Funktionen Mod
Finns det någon som skulle kunna ge en bra förklaring till vad MOD funktionen kan åstadkomma och har för betydelse?
MVH
Johan RubensonSv:Funktionen Mod
Operationen x MOD y ger resten vid heltalsdivision av x med y.
"Om x kolor skall delas upp lika mellan y stycken barn, så får varje barn x DIV y kolor var, och det blir x MOD y kolor över."
T.ex. är 23 DIV 7 = 3 och 23 MOD 7 = 2 ("23 kolor uppdelat på 7 barn blir 3 kolor var och 2 över")
Om man undersöker vad x MOD y ger för ökande värden på x, ser man att värdet ligger mellan 0 och y-1 och dessa upprepas med perioden y:
0 MOD 5 = 0
1 MOD 5 = 1
2 MOD 5 = 2
3 MOD 5 = 3
4 MOD 5 = 4
5 MOD 5 = 0
6 MOD 5 = 1
7 MOD 5 = 2
Detta säger att MOD kan vara användbar när något har ett värde som upprepas med jämna mellanrum: minuter, veckodagar, varannan rad vit/blå.
Ex. för att omvandla sekunder sedan midnatt till timme, minut, sekund:
' Indata: 12345 sekunder skall delas upp i timmar, minuter och sekunder
SekunderTotalt = 12345
Timmar = SekunderTotalt DIV 3600 ' Antal hela timmar (1 timme = 3600 sekunder)
SekunderUtanTimmar = SekunderTotalt MOD 3600 ' Sekunder kvar att dela upp i minuter
Minuter = SekunderUtanTimmar DIV 60 ' Antal hela minuter (utöver timmarna)
Sekunder = SekunderUtanTimmar MOD 60 ' Antal sekunder kvar
' Svaret finns i Timmar, Minuter och Sekunder
Sv: Funktionen Mod
Ibland vill man vet om ett heltal är udda eller jämnt.
<code>
Select Case tal
Case tal Mod 2 = 0
Msgbox "talet är jämnt"
Case Else
MsgBox "talet är udda"
End Select
</code>
Obs Mod hanterar bara heltal .