Ho realizzato una primissima versione del programma. Ecco il codice:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int estr;
int num[10][11][5];
char *ordine[] = {"prima","seconda","terza","quarta","quinta","sesta","settima","ottava","nona","decima"};
char *citta[] = {"BARI","CAGLIARI","FIRENZE","GENOVA","MILANO","NAPOLI","PALERMO","ROMA","TORINO","VENEZIA","NAZIONALE"};
srand(time(NULL));
printf("\n\t\t\t* ESTRAZIONI DEL LOTTO *\n\n");
for(estr=0;estr<10;estr++) {
int ruota;
printf("%s estrazione:\n\n",ordine[estr]);
for(ruota=0;ruota<11;ruota++) {
int i,j;
printf("%s\t",citta[ruota]);
for(i=0;i<5;i++) {
num[estr][ruota][i] = rand() % 90 + 1;
for(j=0; j<i; j++)
if (num[estr][ruota][i] == num[estr][ruota][j]) {
j=i;
i--;
}
printf("%d ",num[estr][ruota][i]);
}
printf("\n\n");
}
}
printf("\n\n");
}
Ed ecco il suo output:
codice:
* ESTRAZIONI DEL LOTTO *
prima estrazione:
BARI 12 10 74 15 38
CAGLIARI 56 50 16 31 81
FIRENZE 31 84 21 82 73
GENOVA 15 1 2 75 89
MILANO 35 63 82 12 64
NAPOLI 86 11 77 79 15
PALERMO 29 1 25 64 67
ROMA 24 81 79 39 21
TORINO 31 31 15 52 23 87
VENEZIA 66 75 50 51 35
NAZIONALE 85 75 26 58 10
seconda estrazione:
BARI 21 68 87 62 82
CAGLIARI 77 24 68 12 52
FIRENZE 1 2 40 40 74 71
GENOVA 32 88 84 16 46
MILANO 59 90 6 71 35
NAPOLI 52 18 22 19 27
PALERMO 5 48 75 66 39
ROMA 23 51 69 34 12
TORINO 69 87 52 70 71
VENEZIA 84 64 68 77 79
NAZIONALE 76 7 41 43 40
terza estrazione:
BARI 75 4 57 58 74
CAGLIARI 45 62 31 30 89
FIRENZE 31 52 49 9 48
GENOVA 61 78 44 74 57
MILANO 24 67 30 54 15
NAPOLI 71 39 21 21 81 22
PALERMO 57 46 78 24 29
ROMA 33 48 59 24 46
TORINO 89 37 57 60 84
VENEZIA 79 47 90 24 65
NAZIONALE 23 90 57 76 66
quarta estrazione:
BARI 37 76 48 19 28
CAGLIARI 70 37 73 19 22
FIRENZE 63 51 69 83 36
GENOVA 77 44 73 5 13
MILANO 28 83 21 27 16
NAPOLI 85 12 67 13 49
PALERMO 4 11 87 51 29
ROMA 24 30 27 59 49
TORINO 49 83 61 79 76
VENEZIA 59 27 29 3 31
NAZIONALE 3 30 75 23 19
quinta estrazione:
BARI 90 69 82 28 28 40
CAGLIARI 31 54 88 44 45
FIRENZE 22 73 71 42 83
GENOVA 29 34 16 70 19
MILANO 74 6 9 76 37
NAPOLI 63 67 21 85 85 73
PALERMO 26 38 62 69 40
ROMA 55 32 37 8 76
TORINO 58 42 57 9 87
VENEZIA 47 5 12 26 23
NAZIONALE 85 32 84 84 30 56
sesta estrazione:
BARI 8 50 13 55 84
CAGLIARI 38 2 56 68 3
FIRENZE 72 9 40 79 85
GENOVA 7 82 51 68 78
MILANO 7 72 89 85 56
NAPOLI 45 26 49 38 55
PALERMO 67 46 66 41 62
ROMA 60 40 25 77 17
TORINO 28 58 25 67 8
VENEZIA 19 35 89 31 12
NAZIONALE 39 90 45 37 84
settima estrazione:
BARI 11 44 71 21 81
CAGLIARI 87 87 88 62 89 21
FIRENZE 83 38 8 31 54
GENOVA 35 50 79 63 57
MILANO 59 7 18 90 71
NAPOLI 56 89 77 54 44
PALERMO 87 59 24 70 50
ROMA 20 28 9 43 27
TORINO 30 36 64 89 28
VENEZIA 80 33 78 68 57
NAZIONALE 44 36 25 23 87
ottava estrazione:
BARI 5 78 85 44 4
CAGLIARI 90 2 62 23 71
FIRENZE 73 4 61 44 47
GENOVA 87 35 44 22 33
MILANO 71 11 65 58 40
NAPOLI 83 64 38 17 86
PALERMO 34 74 36 81 27
ROMA 39 80 28 62 13
TORINO 61 45 68 31 50
VENEZIA 24 27 84 67 10
NAZIONALE 26 10 21 52 67
nona estrazione:
BARI 60 44 40 59 59 88
CAGLIARI 3 5 33 83 31
FIRENZE 33 72 21 4 46
GENOVA 81 10 24 21 59
MILANO 9 9 52 38 18 77
NAPOLI 47 90 90 23 22 43
PALERMO 25 80 65 74 82
ROMA 69 16 36 62 48
TORINO 70 82 51 77 34
VENEZIA 61 62 54 29 71
NAZIONALE 24 43 18 41 81
decima estrazione:
BARI 64 3 81 48 24
CAGLIARI 85 34 65 21 17
FIRENZE 57 90 32 54 23
GENOVA 41 33 66 2 72
MILANO 9 24 43 62 14
NAPOLI 23 85 56 40 87
PALERMO 47 65 89 89 23 74
ROMA 83 56 49 14 73
TORINO 67 65 66 30 49
VENEZIA 17 25 24 70 6
NAZIONALE 32 3 48 55 68
Ovviamente ho fatto scrivere il numero anche se è ripetuto (ma va corretto) e devo migliorare la formattazione per l'allineamento.
Volevo chiedervi: con l'istruzione che ho usato viene escluso lo 0?
E poi: ho notato facendo alcune esecuzioni del programma che si verificano diverse volte ripetizioni di numeri.
Sì, ma la prima riga va richiamata solo una volta all'inizio del programma.
si, ma siamo sicuri che la srand vada chiamata una sola volta nel programma o che invece la devo richiamare ogni 5 numeri (cioè quando cambio la ruota)?
Hai riscontrato problemi di efficienza nella rand()?
per cercare di documentarmi avevo fatto una ricerca in internet e alcuni risultati davano questa impressione. Ma se questa funzione genera davvero numeri «casuali» allora va bene. L'importante è che funzioni bene
Come velocità di calcolo sembra buona