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:
- 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. - 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.
- 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
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 ilmain
e le funzioni usate solo nell'esercizio base - 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:
- in uno, inserirà i file
COGNOME.c
efunzioni.c
. L'eseguibile che viene creato dovrà risolvere l'esercizio 1. - nell'altro, inserirà i file
facoltativo.c
efunzioni.c
. L'eseguibile che viene creato dovrà risolvere l'esercizio 2.