Cpp kertaustehtäviä ratkaisu6d

Mureakuha

Loikkaa: valikkoon, hakuun

Kirjoita ohjelma, jossa arvotaan lottonumeroita. Käyttäjältä kysytään ensin 7 numeroa, ohjelma arpoo satunnaisesti toiset 7 numeroa ja lopuksi näyttää kuinka monta käyttäjä sai oikein. Luo kaksi taulukkoa. Toiseen talletetaan käyttäjän numerot (esim. valitut[39], jossa 1 on valittu, 0 ei valittu) ja toiseen arvotut numerot (esim. arvotut[39], jossa 1 arvottu, 0 ei arvottu). Sekä kone, että käyttäjä eivät saa valita samaa samaa numeroa kuin yhden kerran.

#include <iostream>
#include <stdlib.h> // rand-funktio
#include <time.h> // time-funktio
#define LOTTONUMEROITA 39
#define ARVOTTUJANUMEROITA 7
 
int main()
{
 
    int arvotut [ LOTTONUMEROITA+1 ] = {0}; // koneet arpomat numerot
    int valitut [ LOTTONUMEROITA+1 ] = {0}; // käyttäjän valitsemat numerot
    int y = 0; // yleinen laskuri
 
    srand((unsigned) time(NULL)); // satunnaislukugeneraattorin sekoitus
 
    int annettunumero = 0; // käyttäjän valitsema numero
    for (y=0; y<ARVOTTUJANUMEROITA; y++) // kysyy käyttäjän numerot
    {
 
        cout << "Anna " << y+1 << ". numero: ";
        cin >> annettunumero;
        if (annettunumero > 39 || annettunumero < 1 || valitut[annettunumero] == 1)
        {
            cout << "Virheellinen numero.\n";
            y--;
        }
        else
            valitut[annettunumero] = 1;
 
    }
 
    for (y=0; y<ARVOTTUJANUMEROITA; y++) // arpoo numerot
    {
 
        int arpa = rand(); // arvottu luku
 
        while (arpa > LOTTONUMEROITA) // pienentää lukua kunnes se on alle 40
            arpa = arpa / 40;
 
        if (arvotut[arpa] == 1) // testaa, onko luku jo arvottu
            y--; // jos on, laskee uuden numeron
        else
            arvotut[arpa] = 1; // jos ei, merkkaa sen arvotuksi
 
    }
 
    cout << "\nAnnetut numerot: ";
    for (y=1; y<=LOTTONUMEROITA; y++) // tulostaa kayttajan numerot
        if (valitut[y] == 1)
            cout << y << " ";
 
    cout << "\nArvotut numerot: ";
    for (y=1; y<=LOTTONUMEROITA; y++) // tulostaa arvotut numerot
        if (arvotut[y] == 1)
            cout << y << " ";
 
    int oikein = 0;
    for (y=1; y<=LOTTONUMEROITA; y++) // laskeen oikeiden numeroiden määrän
        if (valitut[y] == 1 && arvotut[y] == 1)
            oikein++;
 
    cout << "\nOikeita numeroita" << oikein << " kpl.\n\n\n";
 
    return 0;
}
Tämän dokumentin kopiointi, levittäminen sekä muokkaaminen on sallittua GNU Free Documentation Licensen version 1.2 tai uudemman Free Software Foundationin julkaiseman version mukaisesti, ilman muuttumattomuuslauseketta tai kansitekstejä. Tätä koskee vastuuvapaus.
Kopio lisenssistä (englanniksi) löytyy täältä.

Alkuperäinen (c) Petteri Hämäläinen

Henkilökohtaiset työkalut