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