Salta ai contenuti. | Salta alla navigazione

Strumenti personali

13 gennaio 2015

Fondamenti di Informatica modulo A - Compito B

Prof. Marco Gavanelli

13 gennaio 2015

Esercizio 1 (punti 16)

Un docente universitario ha salvato in un file binario timesheet.bin le ore in cui ha lavorato durante il mese di Dicembre 2014, suddividendole per i vari progetti a cui partecipa. Ciascun dato nel file timesheet.bin è organizzato come segue:

  • giorno del mese: intero
  • nome del progetto: stringa contenente al più 20 caratteri, compreso il terminatore
  • numero di ore lavorate: intero.

I dati nel file sono al massimo 100 ed il file è ordinato per giorno del mese.

Si desidera visualizzare, per ciascun giorno in cui sono state inserite delle ore, il totale di ore lavorate in quel giorno.

Ad esempio, se il file timesheet.bin contiene:

 

3 Didattica 2
3 UE 2
3 PRIN 1
6 Didattica 2
7 Didattica 2
7 UE 6

il programma dovrà visualizzare:

Giorno 3: ore 5
Giorno 6: ore 2
Giorno 7: ore 8

Si organizzi il programma come segue:

 

  1. Nel main, si invochi una procedura o funzione di lettura (da realizzare al punto 2) ed una di elaborazione (punto 3).
  2. Si scriva la procedura o funzione di lettura; tale procedura o funzione deve leggere il file timesheet.bin e portarne il contenuto in un opportuno array di strutture. Si mostri a video il contenuto dell'array.
  3. Si scriva una procedura o funzione di elaborazione che prende come parametro l'array letto al punto 2 (più, eventualmente, altri parametri) e mostra a video il totale di ore lavorate per ogni giorno in cui il docente ha inserito delle ore.

 

 

Esercizio 2 (punti 4)

Si modifichi il programma in modo che la funzione di elaborazione (al punto 3) non effettui stampe a video, ma fornisca al main un opportuno array di strutture.

Il main dovrà poi invocare una procedura di stampa per visualizzare tale array (e la stampa risultante dovrà essere la stessa dell'esercizio 1).

In seguito, si aggiunga anche una procedura (da invocare nel main) che produce un ulteriore array di strutture, in cui viene calcolato il totale di ore lavorate per ciascun progetto. Il main dovrà poi invocare un'altra procedura di stampa per visualizzare tale array di strutture. Nell'esempio precedente, il programma dovrà visualizzare:

Didattica: ore 6
UE: ore 8
PRIN: ore 1

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.

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.