15 febbraio 2017
Fondamenti di Informatica - Compito A
Prof. Marco Gavanelli
15 febbraio 2017
1 Esercizio (punti 16)
Francesca vuole portare alla festa della scuola delle torte. La nonna le ha dato una ricetta e le ha spedito la lista degli ingredienti via email nel file di testo ricetta.txt . Per ciascun ingrediente, sono riportati:
- nome: stringa contenente al massimo 20 caratteri, senza spazi
- peso: (int) quantità in grammi
Fortunatamente, Francesca ha in casa tutti gli ingredienti; il suo modernissimo frigorifero automatico le fornisce l'elenco di tutti gli alimenti che contiene in un file di testo ingredienti.txt , in cui ciascun elemento è rappresentato come prima, cioè:
- nome: stringa contenente al massimo 20 caratteri, senza spazi
- peso: (int) quantità in grammi
In entrambi i file ci sono al massimo 100 ingredienti.
Francesca vuole sapere quante torte riuscirà a fare; per essere sicura che il programma non si sbagli, vuole anche che visualizzi il nome di un ingrediente per cui le è impossibile fare una torta in più.
Ad esempio, se il file ricetta.txt contiene
Zucchero | 300 |
Burro | 100 |
Farina | 350 |
ed il file ingredienti.txt contiene
Burro | 500 |
Farina | 1000 |
Latte | 1000 |
Zucchero | 700 |
il programma dovrà visualizzare
Si riescono a fare 2 torte.
Non c'e` abbastanza Zucchero per fare 3 torte.
(va bene anche se visualizza "Non c'e` abbastanza Farina per fare 3 torte").
Si strutturi il programma come segue:
- nel
main
, si invochi due volte la stessa funzione di lettura (da sviluppare al punto 2), che dovrà essere invocata sia per leggere il file ricetta.txt sia il file ingredienti.txt ; poi si invochi una procedura o funzione di elaborazione (da implementare al punto 3), infine si stampi il risultato (nelmain
). - si scriva la procedura o funzione di lettura; essa legge un file e ne porta il contenuto in un opportuno array di strutture. Si mostri a video il contenuto dell'array.
- Si scriva la procedura o funzione che calcola il numero di torte massimo che si riescono a fare con gli ingredienti dati ed il nome di un ingrediente che impedisce di fare una torta in più; la procedura o funzione dovrà comunicare al
main
- il numero di torte massimo che si riescono a fare
- il nome di un ingrediente che impedisce di fare una torta in più
È 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 aggiunga al programma una procedura o funzione che calcola quali ingredienti Francesca dovrà acquistare se desidera fare una torta in più. Tale procedura o funzione dovrà creare e fornire al main
un array di strutture con gli ingredienti e le quantità da acquistare. Il main
dovrà poi invocare una procedura o funzione che stampa l'array prodotto.
Nell'esempio sopra, il programma dovrà visualizzare
Per fare 3 torte e` necessario acquistare:
Zucchero 200
Farina 50
Si noti che il file ingredienti.txt è ordinato in ordine alfabetico per il campo nome dell'ingrediente. Si renda il programma più efficiente considerando il fatto che il file è ordinato.
È 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: