Salta ai contenuti. | Salta alla navigazione

Strumenti personali

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

Calogero 1 3 78 32 5 34 75 23 57 49 32 57 10 73 59

e il file estratti.txt contiene

3 2 5 78 30 15 1 75 44 32 57 10 11 73 59 34 50 23 49 22 23 73 47 ...

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:

  1. 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 (nel main )
  2. 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.
  3. Si legga il file estratti.txt e se ne porti il contenuto in un opportuno array. Se ne mostri a video il contenuto.
  4. 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 il main e le funzioni usate solo nell'esercizio 1
  • un file facoltativo.c che contiene il main 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:

  • in uno, inserirà i file COGNOME.c e funzioni.c. L'eseguibile che viene creato dovrà risolvere l'esercizio 1.
  • nell'altro, inserirà i file facoltativo.c e funzioni.c. L'eseguibile che viene creato dovrà risolvere l'esercizio 2.