Fondamenti di Informatica I / Fondamenti di Programmazione Prova scritta del 7 settembre 2009
Esercizio 1 (punti 15) Un file contiene delle informazioni riguardanti la media dei voti degli esami sostenuti da alcuni studenti, uno per riga. In dettaglio, ciascuna riga `e composta da: matricola, numero totale di esami sostenuti e media dei voti. Le informazioni sono separate tra loro da uno spazio. Si assuma che la matricola `e formata da esattamente 7 caratteri e non contiene spazi. Come esempio, si consideri il seguente file.
I-29333 7 23.28 D-34211 5 23.80 S-23432 4 28.75 I-35211 11 27.27 D-22222 2 24.50
Un ulteriore file contiene, una per riga, le verbalizzazioni di alcuni esami. Ogni riga contiene la materia, la data, il voto e la matricola dello studente. I dati sono separati tra loro da uno o pi`u spazi e nessuno contiene spazi al suo interno. Come esempio, si consideri il seguente file.
Fondamenti_Di_Informatica 26/06/2009 28 I-29333 Fondamenti_Di_Informatica 26/06/2009 30 D-34211 Fondamenti_Di_Informatica 26/06/2009 22 S-23432 Fondamenti_Di_Informatica 26/06/2009 19 I-35211 Basi_Di_Dati 22/06/2009 28 I-29333 Basi_Di_Dati 22/06/2009 24 D-34211 Basi_Di_Dati 22/06/2009 22 S-23432 Reti_Di_Calcolatori 16/06/2009 27 I-29333
Si scriva una funzione C che riceva 3 parametri: (i) il nome di un file di medie in ingresso, (ii) il nome di un file di verbalizzazioni e (iii) il nome di un file di medie in uscita.
La funzione deve scrivere nel file di uscita i dati del file in ingresso aggiornati tenendo conto dei voti degli esami nel file delle verbalizzazioni.
Ad esempio, nel caso in cui i due file siano i precedenti, il file di uscita sar`a in seguente.
I-29333 10 24.60 D-34211 7 24.71 S-23432 6 26.50 I-35211 12 26.58 D-22222 2 24.50
Si assuma che i file delle medie possano contenere al massimo 100 studenti, non c’`e invece limite al numero di righe del file delle verbalizzazioni. Si assuma inoltre che tutti gli studenti presenti nel file delle verbalizzazioni siano presenti nel file delle medie in ingresso. Si assuma infine che per il calcolo della media tutti gli esami abbiano uguale valore.
Esercizio 2 (punti 15) Un file contiene le rilevazioni della posizione di un veicolo nel piano in istanti di tempo successivi, a distanza di un secondo una dall’altra. Ciascuna riga contiene le due coordinate in metri rispetto ad una origine prefissata. Come esempio si consideri il seguente file.
10 10 11.3 11.6 12.6 13.4 13.5 15.3 15.4 17.6 14.4 20.7 16.5 23.8 20 30.6
Si scriva una funzione C che riceva come parametri il nome di un file contenente le rilevazioni ed un intero che rappresenta una velocit`a di soglia espressa in chilometri l’ora.
La funzione deve restituire le coordinate del punto in cui il veicolo ha superato la velocit`a di soglia. La velocit`a in un punto `e calcolata sulla base della distanza nel piano rispetto al punto precedente nel file. Se il veicolo non ha mai superato tale velocit`a, allora la funzione deve restituire il valore convenzionale (0.0, 0.0).
Ad esempio nel file precedente, se il valore di soglia `e 10, la funzione deve restituire il punto (15.417.6), in quanto la velocit`a di soglia si raggiunge per la prima volta in quel punto. Infatti, la lunghezza del segmento dal punto (13.5, 15.3) al punto (15.4, 17.6) `e pari a 2.98 metri. La velocit`a di 2.98 m/s corrisponde a 2.98×3.6 = 10.74 Km/h che supera il valore di soglia 10. Il valore 10 invece non viene superato nelle rilevazioni precedenti.