previous next Up Title Contents Index

"Paras" ratkaisu kirjoitettuna C-kielellä

Ohjelma arpoo lottorivin ja tulostaa sen:

    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <time.h>
    void main (void)
    {
        int lotto[40]={0}; /* nollataan taulukko */
        /* nollapaikka on tarpeeton, 
	mutta numeroilla 1-39 indeksointi on suoraviivaista,
        joten taulukon kooksi valitaan 40 eikä 39 */
        int i,x;
        srand(time(NULL)); /*alustetaan satunnaislukugeneraattori */

        for (i=1; i<=7; i++) /* Arvotaan 7 numeroa */
        {
            x=rand()%39+1; /* arvotaan luku */
            while (lotto[x]!=0) /*jos luku on jo arvottu */
            {
                x=rand()%39+1; /* arvotaan uusi */
            } /* mahdollisesti toistuvasti */
            /* kun löytyy luku, jota ei vielä ole arvottu, 
            sijoitetaan taulukkoon arvotun luvun osoittamaan lokeroon 1 */
            lotto[x]=1;
        } /* ja palataan arpomaan seuraava luku */
        for (i=1; i<=3; i++) /* Arvotaan 3 lisänumeroa */
        {
            x=rand()%39+1; /* arvotaan luku */
            while (lotto[x]!=0) /* jos luku on jo arvottu */
            {
                x=rand()%39+1; /* arvotaan uusi */
            } /* mahdollisesti toistuvasti */
            /* kun löytyy luku, jota ei vielä ole arvottu, 
            sijoitetaan taulukkoon arvotun luvun osoittamaan lokeroon 2 */
            lotto[x]=2;
        } /* ja palataan arpomaan seuraava luku */
        /* Tulostetaan oikea lottorivi */
        clrscr();
        printf ("Kierroksen %d oikea rivi", random(52)+1);
        printf (" on seuraava\n");

        for (i=1; i<=39; i++)
        {
            if (lotto[i]==1)
            {
                printf ("%d ",i);
            }
        }
        printf ("\nLisänumerot ovat\n");
        for (i=1; i<=39; i++)
        {
            if (lotto[i]==2)
            {
                   printf ("%d ",i);
            }
        }
    }



(Borlandin kääntäjien käyttäjät: stdlib.h:ssa on määritelty random() ja randomize()-funktiot, joiden käyttäminen on hieman yksinkertaisemman näköistä kuin rand()- ja srand()-funktioiden käyttäminen, ks.esim. Turbo C:n  help.)

previous next Up Title Contents Index