Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Lotto

kuutso [02.11.2009 18:52:58]

#

Saisiko neuvoja miten voin tehä silleen että kun mä annan lottorivejä vaikka "3"
niin se antaa 3 riviä ja joka kerta eri numerot.

#include <stdio.h>
#include <stdlib.h>
#define LOTTO 39
#define MAARA 7

int luvut[LOTTO];
int main(void) {
    int i, n, rivi;
    printf("Anna rivien maara: ");
    scanf("%d", &rivi);
    system("cls");
    printf("L O T T O A R V O N T A");
    printf("\n\n");
    srand(time(0));

    for(i = 0; i < LOTTO; i++){
        luvut[i] = i + 1;
    }
    for(i = 0; i < MAARA;i++){
        n = rand() % (LOTTO - i);
        printf("%d ", luvut[n]);
        luvut[n] = luvut[LOTTO - i - 1];
        }

getch();
}

Metabolix [02.11.2009 19:05:37]

#

Laita for-silmukoiden ympärille toinen silmukka, jonka avulla toistat arvonnan oikean määrän kertoja. Olet jo tehnyt silmukan, jossa arvot oikean määrän numeroita, joten ei pitäisi olla hankalaa tehdä tämän pohjalta silmukkaa, jota toistetaan "rivi" kertaa.

kuutso [02.11.2009 19:20:12]

#

onko tämä lähellekkään sitä mitä tarkoitit?

for(i=1;i<=rivi;i++){
srand(time(0));
for(i = 0; i < LOTTO; i++){
    luvut[i] = i + 1;
}
for(i = 0; i < MAARA;i++){
    n = rand() % (LOTTO - i);
    printf("%d ", luvut[n]);
    luvut[n] = luvut[LOTTO - i - 1];
    }
    rivi=???;
    }

toinen ois sitten

do{
srand(time(0));
    for(i = 0; i < LOTTO; i++){
        luvut[i] = i + 1;
    }
    for(i = 0; i < MAARA;i++){
        n = rand() % (LOTTO - i);
        printf("%d ", luvut[n]);
        luvut[n] = luvut[LOTTO - i - 1];
        }
   }while(i<=rivi);

kumpikaan ei kuitenkaan toimi :

Grez [02.11.2009 19:27:26]

#

Varmaan jos laitat rivi=??? tilalle vaikka printf("\n"); ja siirrät srand ennen ensimmäistä foria, niin tuo on melko lähellä sitä mitä haet..

Metabolix [02.11.2009 19:33:14]

#

Et voi käyttää samaa i-muuttujaa molemmissa silmukoissa. Jos vaihdat ensimmäiseen esimerkkiisi uuteen silmukkaan toisen muuttujan (esim. j) ja poistat omituisen rivin "rivi=???;", koodi kyllä toimii. Tietenkin muuttuja pitää myös määritellä, kuten kaikki muutkin muuttujat. Lisäksi srand-kutsun pitää olla ennen silmukkaa, kuten jo aiemmin sanoin. Muuten saat joka kerta samat tulokset.

kuutso [02.11.2009 19:36:46]

#

nyt jo näyttää hyvältä ja toimiikin.

srand(time(0));
    for(j = 1;j <= rivi;j++){

    for(i = 0; i <= LOTTO; i++){

        luvut[i] = i + 1;
    }
    for(i = 0; i < MAARA;i++){
        n = rand() % (LOTTO - i);
        printf("%d ", luvut[n]);
        luvut[n] = luvut[LOTTO - i - 1];
        }
        printf("\n");
        }

kiitoksia neuvoista.

Vastaus

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

Tietoa sivustosta