18 gennaio 2017
Fondamenti di Informatica - Compito A
Prof. Marco Gavanelli
18 gennaio 2017
1 Esercizio (punti 16)
Nel gioco della tombola, si usano i numeri da 1 a 90; vengono estratti a caso uno alla volta e annunciati.
Ciascun giocatore ha una cartella, su cui sono riportati 15 numeri. Quando viene annunciato un numero, ogni giocatore controlla se la sua cartella lo contiene: se il numero annunciato è presente nella sua cartella, il giocatore lo cancella.
Vince il giocatore che cancella per primo tutti i numeri dalla sua cartella (si dice che ha fatto "tombola").
Sono dati
- un file di testo cartella.txt che contiene i dati di una cartella, ovvero
- il nome del giocatore (stringa contenente al più 20 caratteri, senza spazi)
- una sequenza di 15 numeri interi, tutti diversi e compresi fra 1 e 90
- un file di testo estratti.txt che contiene la sequenza dei numeri estratti
Si desidera scrivere un programma C per calcolare dopo quanti numeri estratti il giocatore fa "tombola".
Ad esempio, se il file cartella.txt contiene
e il file estratti.txt contiene
allora il programma dovrà visualizzare:
Calogero fa tombola dopo 22 estrazioni
in quanto i primi 22 numeri del file estratti.txt contengono tutti i numeri della cartella.
Si organizzi il programma come segue:
- nel
main
, si invochi una funzione di lettura del file cartella.txt (da sviluppare al punto 2), una di lettura del file estratti.txt (da sviluppare al punto 3) ed una che calcola il numero di estrazioni necessari (da implementare al punto 4), poi si stampi il risultato (nelmain
) - si legga il file cartella.txt e se ne porti il contenuto in una opportuna struttura dati. Si mostri a video il contenuto della struttura.
- Si legga il file estratti.txt e se ne porti il contenuto in un opportuno array. Se ne mostri a video il contenuto.
- Si scriva la funzione che calcola dopo quante estrazioni il giocatore fa tombola. Per fare questo, la funzione deve ASSOLUTAMENTE utilizzare almeno altre 2 funzioni, da implementare. È ASSOLUTAMENTE INDISPENSABILE strutturare l'algoritmo in funzioni in questo punto e non fare tutto in un'unica funzione.
È indispensabile organizzare opportunamente il programma in procedure e funzioni; è quindi altamente consigliabile aggiungere altre procedure/funzioni oltre a quelle indicate esplicitamente nel testo.
2 Esercizio (punti 4)
Si supponga ora che ci siano più giocatori, ciascuno con la sua cartella. Le cartelle sono al massimo 100 e sono riportate nel file cartelle.txt , dove ogni cartella è, di nuovo, rappresentata da
- il nome del giocatore (stringa contenente al più 20 caratteri, senza spazi)
- una sequenza di 15 numeri interi, tutti diversi e compresi fra 1 e 90
Si desidera sapere qual è il giocatore che fa tombola per primo.
Si desidera inoltre sapere qual è il primo giocatore che fa cinquina. Un giocatore fa cinquina quando sono stati estratti
- tutti i primi cinque numeri della sua cartella
- oppure il secondo gruppo di 5 numeri della sua cartella (tutti i numeri dal sesto al decimo numero della cartella)
- oppure gli ultimi 5 numeri della sua cartella (i numeri dall'undicesimo al quindicesimo).
È indispensabile organizzare il programma in opportune procedure e/o funzioni.
Si consegnino i file:
- un file
COGNOME.c
(dove COGNOME va sostituito col cognome dello studente) che contiene ilmain
e le funzioni usate solo nell'esercizio 1 - un file
facoltativo.c
che contiene ilmain
e le funzioni usate solo nell'esercizio 2 - un file
funzioni.c
che contiene le funzioni comuni
più tutti i file header ritenuti necessari.
Nella correzione, il docente creerà due progetti: