TOMBOLA_OK.CPP 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 December 10, 2007 Page 1 // PROGRAMMA PER GENERARE A CASO I NUMERI DA 1 A 90 // E STAMPARLI A VIDEO COME SE FOSSE IL TABELLONE DELLA TOMBOLA #include #include #include #include <conio.h> <stdlib.h> <stdio.h> <time.h> // funzione per stampare a video un numero come sul tabellone della tombola void StampaNum(int Num); void main() { int Num; // valore generato a caso (da 1 a 90) int i; // contatore dei numeri fin ad ora generati int Fine=0; // flag di controllo fine esecuzione char Ch; int Estratto[91]; //vettore di FLAG che ricordano se numero già estratto int TotN=0; //Totale Numeri estratti clrscr(); printf("Batti ESC per uscire, qualsiasi altro tasto per estrarre un altro numero"); //azzero tutti gli elementi del vettore for (i=0; i<91 ; i++ ) Estratto[i]=0; randomize(); for (i=0; (i<=90) && (Fine==0) ; i++ ) { //ritenta a generare numero se il numero è già uscito do { Num= (rand() % 90); // resto della divisione intera per 90 Num = Num +1; // il suo valore è sicuramente tra 1 e 90 compresi } while ((Estratto[Num]==1) && (TotN<90)); Estratto[Num]=1; TotN++; StampaNum(Num); Ch=getch(); if (Ch==27 ) Fine=1; // se batti ESC (ASCII 27) termina programma } gotoxy(1,20); printf ("\n\nbatti un ultimo tasto per finire"); getch(); } // fine main // funzione per stampare a video un numero come sul tabellone della tombola void StampaNum(int Num) { int Riga; //riga in cui stampare il numero int Colonna; //Colonna in cui stampare il numero int Unita, Decine; //unità e decine del numero ricevuto dal main Unita=Num % 10; // calcola le unità Decine= (Num-Unita)/10; //calcola le decine if (Unita==0) { Colonna=40; Riga= Decine + 1; } else { Colonna=Unita*4; Riga= Decine + 2; } gotoxy(Colonna,Riga); printf("%3d" ,Num); } //posiziona il cursore nella posizione corretta //stampa il numero 0..89 TOMBOLA_OK.CPP 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 December 10, 2007 /* ESEMPIO DI ESECUZIONE 1 11 21 31 51 61 71 81 */ 2 12 22 32 42 52 62 72 82 3 13 23 33 43 53 73 83 4 24 34 44 54 64 74 84 5 15 25 35 45 55 65 75 85 6 26 36 46 56 66 76 86 7 17 27 37 47 57 67 77 8 18 28 38 48 58 68 78 88 9 10 20 29 49 59 69 79 89 40 50 60 70 80 90 Page 2