Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Parillisuuden tarkastus

musse89 [09.01.2006 15:16:41]

#

'määritetään muutujat

Dim luku1 As Integer
Dim luku2 As Integer

'määritetään luvut

If luku1 <= 0 Then luku1 = paeillinen

'määritetään tulos
If luku1 And luku2 Then
   'pariton
Else
   'parillinen
End If

'tulostetaan tulos

MsgBox ("luku on parillinen" & " luku on pariton")

End Sub

missä mättää ku pitäis saada niinku tämmöstä tulosta että,
kone kysyy käyttäjältä inputboxilla kokonaislukua ja
Jos luku on jaollinen 2:lla
Tulosta ”Parillinen”
Muuten
Tulosta ”Pariton”
LoppuJos

Mod. edit: lisäsinpäs kooditagit

miiro [09.01.2006 16:33:25]

#

Ahaa, nyt tajuan! Mietin että mihinkäs sä tuota Andia tarvitset, mutta kun katoin aiemman keskustelusi, löysin vastauksen. En tosin ymmärrä tuota And-operaattoria, mutta ei sen väliä, esimerkkikoodini toimii :D
Valmis koodi, vaikka sitähän ei kai saisi antaa:

Dim luku As Integer
luku = InputBox("Anna luku")
If luku And 1 Then
   MsgBox "Luku on pariton"
Else
   MsgBox "Luku on parillinen"
End If

EDIT: Uusi koodi Andilla.

Merri [09.01.2006 18:40:51]

#

And-operaattori vertailee lukuja binäärimuodossa. Otetaan vaikka luvut 1, 2, 3 ja 4:

1 = 00000001
2 = 00000010
3 = 00000011
4 = 00000100

Yhdessä tavussa on kahdeksan bittiä, siksi noita binäärimuotoisia lukuja on kahdeksan. Binäärihän on ykkösiä ja nollia. And toimii siten, että se vertailee ensimmäistä että toista lukua ja jättää päälle vain ne bitit, jotka ovat molemmissa aktiivisia. Siten esimerkiksi 3 And 1 antaa vastaukseksi 1:

3 = 00000011
1 = 00000001
And ========
=   00000001

Or-operaattori puolestaan laittaa kaikki aktiiviset päälle:

3 = 00000011
1 = 00000001
Or =========
=   00000011

Xor-operaattori kytkee päälle, jos molemmat ovat erilaiset ja pois jos molemmat ovat samat:

3 = 00000011
1 = 00000001
Xor ========
=   00000010

Auttaa varmaankin ymmärtämään :)


Ai niin, tiedoksi vielä että nämä ovat todella nopeita laskutoimituksia, joten näiden käyttö on varsin järkevää.

Niko [09.01.2006 22:43:46]

#

Merri kirjoitti:

And-operaattori vertailee lukuja binäärimuodossa. Otetaan vaikka luvut 1, 2, 3 ja 4:
....

Loistoviesti! Selvensi kyllä huomattavasti. Ite kun en ole tollein pintaa syvemmältä ajatellu asioita.

rndprogy [09.01.2006 23:39:05]

#

Näin yksinkertaisesti sen voi tarkistaa.

If luku Mod 2 = 0 Then parillinen

Eli Mod:lla otetaan jakojäännös.

miiro [15.01.2006 18:40:27]

#

rndprogy: Lyhyempi tapa on edelleen And.
Esimerkki:

If luku And 1 Then pariton

hunajavohveli [15.01.2006 18:57:15]

#

And näyttäisi olevan myös aavistuksen verran Modia nopeampi, millä ei tietysti ole juuri väliä, ellei operaatiota joudu käyttämään silmukassa montaa kertaa peräkkäin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta