Salta ai contenuti. | Salta alla navigazione

Strumenti personali

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:

figura.png

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:

 

  1. 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.
  2. 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.
  3. 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
    più, eventualmente, altri parametri, e fornisce la distanza totale che l'infermiera deve percorrere.

 

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 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

più tutti i file header ritenuti necessari.