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(); }
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.
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 :
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..
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.