Salta ai contenuti. | Salta alla navigazione

Strumenti personali

21 dicembre 2015 AM

Fondamenti di Informatica - Compito A

Prof. Marco Gavanelli

21 dicembre 2015 - mattina

Esercizio (punti 16)

Un bambino ha un album di figurine, con 100 posti per attaccare figurine, numerati da 1 a 100. Gli hanno regalato un certo numero di bustine di figurine; ogni bustina contiene 5 figurine.

Il file di testo buste.txt contiene i dati delle bustine; le bustine sono al massimo 300. Per ciascuna bustina si hanno 5 short int; ogni short int contiene il numero di una figurina che è presente nella bustina.

Si vuole scrivere un programma C che calcola se il bambino riuscirà a completare l'album e, se ci riesce, quante delle bustine ha effettivamente usato per completare l'album (si supponga che il bambino apra le bustine nello stesso ordine in cui sono nel file buste.txt).

Facciamo un esempio nel caso in cui l'album, invece di 100 figurine, ne contiene soltanto 10. Se il file buste.txt contiene:

 

1 3 7 9 10
1 7 5 4 9
2 5 7 9 1

il programma dovrà stampare

Album non completato.

Se, invece, il file buste.txt contiene:

 

1 3 7 9 10
2 6 5 4 8
2 5 7 9 1

il programma dovrà stampare

Album completato dopo 2 bustine

in quanto il bambino attacca le figurine della prima bustina, poi quelle della seconda e a questo punto l'album è completo, quindi non apre la terza bustina.

Si organizzi il programma come segue:

  1. nel main, si invochi una procedura o funzione di lettura del file buste.txt (da sviluppare nel punto 2); si invochi una procedura/funzione che, dato l'array letto dal file, produce un array di interi (da sviluppare nel punto 3); infine si stampino i risultati indicati precedentemente.
  2. Si scriva la procedura o funzione di lettura; essa legge il file buste.txt, ne porta il contenuto in un opportuno array di strutture e visualizza tale array.
  3. Si scriva una procedura o funzione che, dato l'array letto al punto 2 (più, eventualmente, altri parametri), fornisce al main
    • se il bambino completa l'album
    • in caso lo termini, quante bustine apre
    Questa procedura o funzione deve invocare altre procedure o funzioni, che andranno poi sviluppate.

 

Esercizio 2 (punti 4)

Sia se l'album viene completato, sia se non viene completato, il bambino avrà probabilmente molte figurine 'doppie'.

Si desidera sapere quali sono le 10 figurine che sono comparse con maggiore frequenza; si modifichi quindi il programma per stampare questa ulteriore informazione. È 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 base
  • 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.