Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: QB +presidentti peli

Sivun loppuun

juhaz [15.04.2003 21:33:27]

#

Kuinka saan tehtyä niin, että jos kansaa on vaikkapa 5,300,000 niin peli arpoo kuinka moni äänesti sinua ja jos sait eniten ääniä niin voitit muut ehdokkaat?

Pelin pitäisi näyttää myös muidenkin ehdokkaiden äänimäärät ja pelissä pitäisi mahdollisesti olla myös äänestämättömiäkin osa, mutta kunhan saan tuon arvontahomman?

Sami [16.04.2003 09:26:28]

#

Tässä on yksinkertainen päästä heitetty koodi (jonka toimivuudestakaan en ole täysin varma ja jonka realisisuus on mitä on), mutta idea on suunnilleen tällainen.

RANDOMIZE TIMER
ehdokkaita = 5
kansa = 5300000
DIM aanet(1 to ehdokkaita) AS LONG
FOR i = 1 TO 5
  aanet(i) = INT(RND * kansa / ehdokkaita)
NEXT i
tyhjia = kansa - aanet(1) - aanet(2) - aanet(3) - aanet(4) - aanet(5)
FOR i = 1 to 5
  PRINT aanet(i)
NEXT i
PRINT tyhjia

thefox [16.04.2003 09:52:25]

#

Noh noh, eipä nyt sentään ehkä ihan noin. Eihän tuossa ole päätä eikä häntää :) Heitetäänpä päästä jälleen kerran:

RANDOMIZE TIMER
CONST ehdokkaat = 5
CONST kansa = 5300000
DIM aanet(ehdokkaat) AS LONG ' varataan solu 0 äänestämättömille
FOR n = 1 TO kansa ' jokainen kansalainen antaa äänen
  aanet(INT(RND * (ehdokkaat + 1))) = aanet(INT(RND * (ehdokkaat + 1))) + 1
NEXT n
PRINT "Tyhjiä:"; aanet(0)
FOR n = 1 TO ehdokkaat
  PRINT "Ehdokas"; n; " ->"; aanet(n); " ääntä."
NEXT n

EDIT: ja toki kannattaa viritellä jonkinlaiset voimasysteemit, nyt äänet jakautunevat melkolailla tasaisesti jokaiselle ehdokkaalle (ja tyhjälle).

Sami [16.04.2003 15:55:12]

#

En tarkoittanutkaan että siinä olisi päätä, mutta häntä nyt ainakin löytyy (katso vaikka ---*, oikein komea (ja suora) tupsuhäntä ;)
Tein tuon täysin päästä parissa minuutissa koulussa ollessani, joten mitään ihmeellistä siitä ei voikaan odottaa, mutta jos siitäkin olisi edes jotain apua...

juhaz [16.04.2003 17:27:37]

#

Itseasiassa Samin esimerkki toimii minulla, mutta tuota Fawkz:n koodia en saanut toimimaan vaan jää pelkää tyhjää ruutuun.

Käytössä on quubeisikki 4.5

edit: Nyt pää kyllä kumisee tyhjää enkä keksi ideaa, mutta kuinka tuohon vielä saisi lisättyä niin, että se katsoo kuka sai eniten ja kertoisi voittajan?

Sami [16.04.2003 17:52:28]

#

Kyllä tuo fawkzinkin esimerkki toimii, mutta äänten laskeminen kestää vain pirun kauan (laitoin ajastimen laskemaan sen ja siihen meni melkein 40 sekuntia!)

Sami [16.04.2003 18:04:27]

#

Tähän on lisätty semmoinen pieni juttu, että tämä etsii voittajan ja antaa hieman vähemmän tyhjiä ääniä:

CLS
PRINT "QBasicin vaalikoneen arpomat tulokset:"
PRINT

RANDOMIZE TIMER
ehdokkaita = 5   ' Ehdokkaiden määrä
kansa = 5300000  ' Kuinka monta äänestäjää on

DIM aanet(1 TO ehdokkaita) AS LONG  ' Taulukko ehdokkaiden äänille

FOR i = 1 TO ehdokkaita   ' Arvotaan ehdokkaiden äänimäärät
  aanet(i) = INT(RND * kansa / ehdokkaita / 2) + kansa / ehdokkaita / 2
NEXT i

tyhjia = kansa - aanet(1) - aanet(2) - aanet(3) - aanet(4) - aanet(5)   ' Lasketaan tyhjät äänet
FOR i = 1 TO ehdokkaita  ' Näytetään ehdokkaiden saamat äänimäärät
  PRINT "Ehdokas"; LTRIM$(STR$(i)); " sai"; aanet(i); "ääntä"
NEXT i
PRINT "Tyhjää äänesti"; tyhjia; "kansalaista"   ' Näytetään tyhjien äänien määrä

PRINT
voittaja = 1   ' Virhetilanteen esto
FOR i = 1 TO ehdokkaita
  IF aanet(i) > aanet(voittaja) THEN voittaja = i   ' Etsitään voittaja
NEXT
PRINT "Voittajaksi selviytyi ehdokas numero"; voittaja   ' Julkistetaan voittaja

thefox [16.04.2003 21:26:49]

#

Juu huomasinkin että tuo oma viritelmäni olikin ihan paska ;-) En vain heti hokaissut teikäläisen koodin ideaa, eikä ollut tilaisuutta testata.


Sivun alkuun

Vastaus

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

Tietoa sivustosta