17 gennaio 2011 - mattina
Fondamenti di Informatica - Compito A
Prof. Marco Gavanelli
17 gennaio 2011
Esercizio (punti 16)
Al fine di evitare costosi ricoveri in ospedale, l'azienda ospedaliera ha deciso di mandare le infermiere a casa dei pazienti che hanno bisogno di cure semplici. L'azienda ha un file di testo pazienti.txt che contiene, per ogni paziente (al massimo 100):
- Infermiera: nome dell'infermiera che visiterà il paziente. Dato di tipo stringa con al più 20 caratteri, senza spazi
- X,Y: coordinate nel piano cartesiano dell'abitazione del paziente. Dato di tipo float. L'unità di misura è in Km.
Ogni mattina, ogni infermiera visualizza l'elenco dei pazienti che deve visitare e li visita nell'ordine stabilito nel file, partendo dall'ospedale che ha coordinate (0,0).
Si scriva un programma C che legge da tastiera il nome di una infermiera e calcola quanti Km dovrà percorrere nel suo tragitto, supponendo che come distanza fra due punti si possa usare la distanza euclidea.
Ad esempio, se il file pazienti.txt contiene i seguenti dati:
Rossi | 3 | 4 |
Neri | 1 | -1 |
Rossi | 0 | 4 |
Verdi | 4 | 4 |
Rossi | -1 | 3 |
Neri | -1 | -1 |
i percorsi saranno quelli riportati in figura:
quindi l'infermiera Rossi dovrà visitare, nell'ordine, i punti (0,0), (3,4), (0,4) e (-1,3). La distanza da percorrere sarà quindi 5+3+√(2)=9.41 Km (circa).
L'infermiera Verdi percorrerà √(32) = 5.65 Km (circa).
L'infermiera Neri percorrerà √(2)+2 = 3.41 Km (circa).
Si usi il seguente algoritmo:
- Nel
main
, si invochi la funzioni di lettura (punto 2), si legga da tastiera il nome dell'infermiera di cui si vuole calcolare la distanza da percorrere, si invochi la funzione di calcolo della distanza (punto 3), infine si visualizza a video la distanza che l'infermiera deve percorrere. - Si scriva una procedura o funzione di lettura, che legge il file pazienti.txt e ne porta il contenuto in un opportuno array di strutture. Si visualizzi a video il contenuto dell'array.
- si scriva una funzione che calcola la distanza percorsa da un'infermiera; tale funzione prende come parametri
- l'array letto al punto 2
- il nome di una infermiera
Facoltativo (4 punti)
Si modifichi il programma in modo che fornisca il nome e i km percorsi dall'infermiera che effettua il percorso più lungo.
Si consegnino i file:
- un file
funzioni.c
che contiene le funzioni comuni - un file
main.c
che contiene ilmain
e le funzioni usate solo nell'esercizio base - un file
facoltativo.c
che contiene ilmain
e le funzioni usate solo nell'esercizio facoltativo
più tutti i file header ritenuti necessari.