22dic08pm
Fondamenti di Informatica 1 - Compito E
Prof. Marco Gavanelli
22 Dicembre 2008
Esercizio (punti 16)
In una città la rete idrica segue le strade. La città è a pianta romana: ci sono strade parallele all'asse Nord-Sud e strade parallele all'asse Est-Ovest. Le strade parallele sono a distanza di 1km una dalla successiva.
Se viene rilevata la presenza di un inquinante nell'acqua dell'acquedotto, vengono mandate delle squadre di operai a chiudere degli idranti. Ciascuno degli idranti è posizionato all'incrocio di due strade ed è identificato da due coordinate ( int
): X e Y. Le squadre, invece, sono identificate da un colore (stringa).
Il piano di intervento è riportato in un file binario idranti.bin , che contiene una sequenza di dati del tipo:
colore: stringa di 15 caratteri massimo, compreso il terminatore
X, Y: interi
Questo significa che la squadra del dato colore deve andare a chiudere l'idrante con coordinate (X,Y).
Ad esempio, se il file idranti.bin contiene i seguenti dati:
ROSSO | 3 | 4 |
BLU | 2 | 3 |
BLU | 1 | 2 |
ROSSO | 4 | 4 |
significa che la squadra rossa deve chiudere prima l'idrante che si trova alle coordinate (3,4), poi quello alle coordinate (4,4). La squadra bianca, invece, deve chiudere prima l'idrante in (2,7), poi quello in (1,2). Tutte le squadre partono dalla posizione (0,0).
Dato il nome di una squadra (letto da tastiera), si desidera sapere la distanza che deve percorrere. Si utilizzi il seguente algoritmo:
- Nel
main
, si invochi una procedura o funzione di lettura (da realizzare al punto 2), si legga da tastiera il nome di una squadra e si invochi una funzione che calcola i km percorsi da quella squadra (punto 3). Infine, si stampi il risultato. - Tramite una procedura o funzione, si legga il file idranti.bin e se ne porti il contenuto in un opportuno array di strutture. Si visualizzi il contenuto dell'array.
- Si scriva una funzione che prende come parametri l'array letto al punto 2, il nome di una squadra (ed, eventualmente, altri parametri) e fornisce il numero di km percorsi da quella squadra. Per calcolare il numero di km per andare da un punto ad un altro, si utilizzi (e poi si implementi) una ulteriore funzione.
Facoltativo (punti 3)
Si modifichi il programma in modo che, invece di leggere da tastiera il nome di una squadra, legga dal file di testo squadre.txt i nomi delle squadre e calcoli qual è la squadra che deve percorrere più km.