Salta ai contenuti. | Salta alla navigazione

Strumenti personali

18 febbraio 2016

Fondamenti di Informatica - Compito A

Prof. Marco Gavanelli

 

18 febbraio 2016

1 Esercizio (punti 16)

Nell'albergo Bellavista si utilizza un file di testo stanze.txt per memorizzare quali stanze sono state prenotate nel mese di marzo. Le stanze sono al più 100; per ciascuna stanza il file stanze.txt contiene:

  • descrizione: stringa contenente al più 20 caratteri, senza spazi
  • prenotazioni: array contenente esattamente 31 interi. Ciascuno degli interi corrisponde ad un giorno del mese; ha valore
    • 1 se nel corrispondente giorno del mese la stanza è già prenotata;
    • 0 se la stanza non è prenotata per quel giorno.

Quando un nuovo cliente vuole prenotare una stanza, comunica il giorno di arrivo all'albergo e quello di partenza; il personale dell'albergo deve trovare una stanza che è libera dal giorno di arrivo fino al giorno di partenza (compresi).

Ad esempio, se il file stanze.txt contiene

Rossa 1 1 1 0 0 0 0 ...
Bianca 1 0 0 1 0 1 1 ...
Verde 0 0 1 1 1 0 0 ...

ed un nuovo cliente chiede di prenotare una stanza

  • dal 2 al 3, gli si potrà assegnare la stanza Bianca,
  • se chiede una stanza dal 4 al 6 gli si potrà assegnare la Rossa,
  • mentre se chiede una stanza dal 3 al 4 bisognerà comunicargli che non c'è alcuna stanza disponibile, perché nessuna delle stanze è libera sia il 3 sia il 4.

Si scriva un programma C che accede al file stanze.txt, richiede da tastiera una data di arrivo ed una di partenza e visualizza se c'è una stanza libera nei giorni richiesti. Qualora la stanza ci sia, visualizza anche la descrizione di tale stanza.

Si organizzi il programma come segue:

  1. nel main, si invochi una procedura o funzione di lettura del file stanze.txt (da sviluppare nel punto 2); si leggano da tastiera due interi che rappresentano il giorno di arrivo ed il giorno di partenza di un cliente, poi si invochi una procedura/funzione che comunica al main se c'è una stanza libera e la sua descrizione (da sviluppare al punto 3). Nel main, si visualizzi quindi il risultato (se c'è una stanza libera e, in caso affermativo, la sua descrizione).
  2. Si scriva la procedura o funzione di lettura; essa legge il file stanze.txt, ne porta il contenuto in un opportuno array di strutture e visualizza tale array.
  3. Si scriva una procedura/funzione che prende come parametri
    • due giorni (arrivo e partenza) forniti come interi
    • l'array letto al punto 2
    più, eventualmente, altri parametri, e comunica al main
    • se nell'intervallo di date richiesto c'è una stanza libera
    • e, in caso affermativo, la descrizione della stanza.
    Per fare questo DEVE invocare un'altra procedura o funzione non banale (è obbligatorio aggiungere altre procedure o funzioni in questo punto; se l'organizzazione in procedure/funzioni non sarà giudicata buona verranno tolti dei punti).

È 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)

Visto il successo del programma sviluppato per l'hotel Bellavista, anche all'hotel Miramar hanno deciso di dotarsi di un programma simile. Nell'albergo Miramar, diversamente da come si fa nell'albergo Bellavista, le prenotazioni sono memorizzate in un file di testo miramar.txt che contiene, per ogni prenotazione:

  • giorno di arrivo: intero
  • giorno di partenza: intero
  • stanza: intero

Nel Miramar, le stanze sono esattamente 20 (numerate da 1 a 20); le prenotazioni, nel mese di Marzo, sono al più 100. Analogamente all'hotel Bellavista, si desidera scrivere un programma che legge da tastiera il giorno di arrivo e quello di partenza di un cliente e gli si deve assegnare una stanza (se possibile).



È indispensabile organizzare il programma in opportune procedure e/o funzioni. Se il numero di funzioni sarà giudicato basso, verranno tolti dei punti.

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 1
  • un file facoltativo.c che contiene il main 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 e funzioni.c . L'eseguibile che viene creato dovrà risolvere l'esercizio 1.
  • nell'altro, inserirà i file facoltativo.c e funzioni.c . L'eseguibile che viene creato dovrà risolvere l'esercizio 2.