Salta ai contenuti. | Salta alla navigazione

Strumenti personali

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:

  1. 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.
  2. 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.
  3. la funzione di ricerca deve prendere come parametri
    • il viaggio vinp letto nel main
    • l'array letto al punto 2
    • più, eventualmente, altri parametri
    e deve fornire, come valore di ritorno
    • 0 se non ci sono viaggi compatibili
    • 1 se è stato trovato un viaggio compatibile
    Nel caso sia stato trovato un viaggio compatibile, deve fornire i dati di tale viaggio, tramite il passaggio per riferimento di una struttura.

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 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 facoltativo
  • un file funzioni.c che contiene le funzioni comuni

più tutti i file header ritenuti necessari.