Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: luvun arpominen (QB)

Sivun loppuun

tekojalka [07.06.2004 00:05:58]

#

eli miten voin arpoa luvun 1 - 1 000 000 väliltä.
aloitus koodi

DIM SHARED luku AS STRING
PRINT "Valitse luvut 1 - 1000000 väliltä. erota luvut toisistaan pilkulla!"
INPUT "luvut: ", luku$

edit: typoja

rndprogy [07.06.2004 00:09:11]

#

Koska QB on niin alkeellinen et voi valita lukua yhden ja MILJOONAN väliltä. Luvun täytyy olla jotain 30000 maks. Ja se tapahtuu

RANDOMIZE TIMER 'suositeltavaa että aloittaessa on aina eriluku
luku = INT(RND * 30000) + 1

tekojalka [07.06.2004 00:15:01]

#

.. ja mihin kohtaan koodi tulee

jcd3nton [07.06.2004 00:16:12]

#

Sinne missä haluat arpoa sen luvun.

tekojalka [07.06.2004 00:16:53]

#

QB valittaa tuosta "luku" hommasta "type mismatch"

Antti Laaksonen [07.06.2004 00:18:59]

#

Kyllä luvun voi QBasicissakin arpoa yhden ja miljoonan väliltä. Muuttujan vain täytyy olla LONG-tyyppinen, jotta arvottu luku mahtuu siihen. Tässä on esimerkki:

DIM luku AS LONG
RANDOMIZE TIMER
luku = INT(RND * 1000000) + 1

PRINT "Arvottu luku:"; luku

Vielä alkuperäisestä koodista: Merkkijono (STRING) tuskin on paras muuttujatyyppi lukujen tallentamiseen. Ja en usko, että tarvitset SHARED-muuttujaa. SHARED-määritystä käytetään ainoastaan silloin, kun muuttujan arvoon täytyy päästä käsiksi aliohjelmissa ja funktioissa.

tekojalka [07.06.2004 12:28:56]

#

Minulla on yksi aliohjelma..
Sen takia SHARED

tekojalka [07.06.2004 13:39:31]

#

miten saisin tähän vielä että voi valita luvut joidenka välistä arvata?

Antti Laaksonen [07.06.2004 13:42:44]

#

tekojalka kirjoitti:

Minulla on yksi aliohjelma..
Sen takia SHARED

Ehkä olisi parempi, jos välittäisit aliohjelmalle muuttujan arvon parametrina, jolloin tuon muuttujan ei täytyisi olla yleinen. Mutta käyhän se toki noinkin.

tekojalka kirjoitti:

miten saisin tähän vielä että voi valita luvut joidenka välistä arvata?

Tarvittava kaava löytyy sivulta http://qb.ohjelmointiputka.net/?RND.

tekojalka [07.06.2004 13:50:08]

#

en oikein ymmärtänyt tuota kaavaa

Anssi V [07.06.2004 13:57:41]

#

No, ensin siinä lasketaan miltä väliltä luku arvotaan ja sitten arvotaan se ja lisätään minimiin. Tai, jotain...

Antti Laaksonen [07.06.2004 13:58:49]

#

Sijoita vain haluamasi ylä- ja alaraja tuohon kaavaan. Esim. jos haluat arpoa luvun väliltä 17 - 61, kirjoita:

luku = INT((61 - 17 + 1) * RND + 17)

tekojalka [07.06.2004 13:59:45]

#

mutta käyttäjä itse saisi valita sen.

Anssi V [07.06.2004 14:02:21]

#

Kantsiskohan lukea vähän oppaita?!

Edit: Kaikista parhaiten sitä oppii kun viittii itse vähän paneutua asiaan.

tejeez [07.06.2004 14:05:02]

#

Funktio RND siis palauttaa "satunnaisen" luvun väliltä 0-1.

tekojalka [07.06.2004 14:24:29]

#

oke

tekojalka [07.06.2004 16:20:19]

#

mutta voisitteko vastata tuohon ylempän kysymykseen

tekojalka [07.06.2004 17:48:41]

#

miten voin tehdä sen siten että käyttäjä saisi itse valita ne luvut

Anssi V [07.06.2004 17:52:01]

#

En ymmärrä QB:stä mitään, mutta kai se toimii ihan samalla lailla kun esim. c:llä. Eli otat käyttäjältä jollain komennolla luvut muuttujiin ja asetat ne muuttujat tuohon aikaisemmin mainittuun koodiin.

Antti Laaksonen [07.06.2004 17:52:59]

#

Lue luvut muuttujiin INPUT-komennolla, ja sijoita muuttujat tuohon kaavaan.

INPUT "Anna alaraja:", ala&
INPUT "Anna yläraja:", yla&

'...

luku = INT((yla& - ala& + 1) * RND + ala&)

tekojalka [07.06.2004 23:08:23]

#

Okei nyt ohjelma toimii kuten haluan.


Sivun alkuun

Vastaus

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

Tietoa sivustosta