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 ilmaine le funzioni usate solo nell'esercizio base
-  un file   facoltativo.cche contiene ilmaine le funzioni usate solo nell'esercizio facoltativo
-  un file   funzioni.cche contiene le funzioni comuni
più tutti i file header ritenuti necessari.
 
     
                 