18 febbraio 2014
Fondamenti di Informatica - Compito B
Prof. Marco Gavanelli
18 febbraio 2014
Esercizio (punti 12)
Il carpooling serve per far viaggiare sulla stessa auto persone che devono fare lo stesso viaggio, in modo da dividere le spese e ridurre l'inquinamento e il traffico.
Un sito di carpooling raccoglie i nomi e i viaggi che i suoi utenti vogliono svolgere e li salva in un file binario viaggi.bin. I viaggi nel file viaggi.bin sono al massimo 100; per ciascun viaggio il file contiene:
- Nome della persona che effettua il viaggio (stringa contenente al massimo 20 caratteri, compreso il terminatore)
- città di partenza (stringa contenente al massimo 20 caratteri, compreso il terminatore)
- città di arrivo (stringa contenente al massimo 20 caratteri, compreso il terminatore)
- ora di partenza (intero)
Si vuole scrivere un programma che legge da tastiera un nuovo viaggio vinp e visualizza, se esiste, un altro viaggiatore che deve svolgere lo stesso viaggio alla stessa ora.
Ad esempio, se il file viaggi.bin contiene:
Antonio | Bologna | Ferrara | 10 |
Luigi | Bologna | Ferrara | 7 |
Franco | Ferrara | Bologna | 9 |
Elisa | Bologna | Ferrara | 10 |
Gianna | Bologna | Ferrara | 10 |
Ines | Ferrara | Bologna | 9 |
e da tastiera viene inserito il viaggio
Pasquale Bologna Ferrara 10
allora il programma dovrà stampare
Antonio effettua lo stesso viaggio: Bologna-Ferrara ore 10
se, invece, da tastiera viene inserito
Pasquale Bologna Ferrara 9
allora il programma stamperà
Non esistono viaggi compatibili.
Si usi il seguente algoritmo:
- nel
main
, si invochi una procedura o funzione di lettura (punto 2), si legga da tastiera un viaggio vinp, si invochi una funzione di ricerca (punto 3), infine si mostri il risultato. - la procedura o funzione di lettura deve leggere il file viaggi.bin e portarne il contenuto in un opportuno array di strutture. Si mostri a video l'array.
- la funzione di ricerca deve prendere come parametri
- il viaggio vinp letto nel
main
- l'array letto al punto 2
- più, eventualmente, altri parametri
- 0 se non ci sono viaggi compatibili
- 1 se è stato trovato un viaggio compatibile
- il viaggio vinp letto nel
Facoltativo (punti 8)
Si modifichi ora il programma in modo tale che non prenda in ingresso un nuovo viaggio, ma che mostri a video i gruppi di persone che possono svolgere il viaggio insieme, supponendo che vogliano partire esattamente alla stessa ora. Nell'esempio precedente, il programma dovrebbe stampare:
GRUPPO Bologna-Ferrara ore 10
Antonio
Elisa
Gianna
GRUPPO Bologna-Ferrara ore 7
Luigi
GRUPPO Ferrara-Bologna ore 9
Franco
Ines
Si strutturi opportunamente il programma, aggiungendo almeno 3 funzioni (o procedure).
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 facoltativo - un file
funzioni.c
che contiene le funzioni comuni
più tutti i file header ritenuti necessari.