Corsi di laurea in Ingegnera Elettronica e Ingegneria
Transcript
Corsi di laurea in Ingegnera Elettronica e Ingegneria
Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 4 febbraio 2015 Esercizio 1 (14 punti) Un file ASCII contiene la registrazione degli arrivi di una corsa ciclistica in tre tappe. Ogni riga riporta i tempi di ciascun concorrente nelle tre tappe, nel formato che si evince dal seguente esempio: 27 341 5 12 71 71 M F M M J F 2h 2h 1h 2h 2h 2h 12m 7m 45m 18m 52m 16m 5s 52s 6s 23s 0s 6s 1h 2h 2h 2h 2h 1h 54m 8m 0m 2m 26m 56m 15s 5s 30s 20s 3s 57s 0h 1h 1h 1h 1h 1h 56m 3m 4m 15m 55m 19m 44s 48s 25s 0s 0s 3s Il primo numero è il pettorale del concorrente, il carattere M, F o J indica la categoria (classifica maschile, femminile o junior), i successivi tre gruppi di valori indicano i tempi in ciascuna delle tre tappe. Si scriva una funzione in linguaggio C che riceva il nome di un file siffatto e un carattere ('M', 'F' o 'J') che indica la categoria che si deve considerare. La funzione deve restituire il numero del pettorale del concorrente che ha vinto la gara nella categoria specificata dal relativo parametro, cioè quello che ha ottenuto il minor tempo totale nelle tre tappe. Nel caso in cui non sia presente nessun concorrente nella categoria specificata, la funzione deve restituire -1. Esercizio 2 (16 punti) Un file ASCII contiene le regole di conversione di alcune unità di misura nelle misure equivalenti del sistema metrico decimale (s.m.d.). Un esempio di tale file è riportato nel seguito (la massima lunghezza del file è 100 righe): chilometri = miglia_nautiche * 1.852 centimetri = pollici * 2.54 metri = piedi * 0.3048 metri = iarde * 0.9144 litri = galloni_inglesi * 4.546 litri = galloni_americani * 3.785 Un secondo file contiene una serie di grandezze, una per riga, con le relative unità di misura. Per esempio: 12 chilometri 45 galloni_americani 6.3 piedi 8123 metri 7.9 iarde 9 palmi 12 centimetri Si scriva un programma in linguaggio C che riceva sulla riga di comando i nomi di tre file: il primo sia il nome del file contenente le regole di conversione nel formato sopra descritto, il secondo il nome del file contenente le grandezze come nell’esempio precedente e il terzo il nome del file di uscita che il programma deve generare. Il programma deve scrivere nel file di uscita le grandezze nel s.m.d. applicando, per le grandezze non appartenenti al s.m.d., le regole di conversione lette dal file. Se un’unità di misura non compare nel file di conversione a destra dell’uguale, nel file di uscita va riportata invariata. Relativamente all’esempio di cui sopra, il file di uscita dovrà contenere i seguenti valori: 12 chilometri 170.325 litri 1.92024 metri 8123 metri 7.22376 metri 9 palmi 12 centimetri