17 gennaio 2018
Fondamenti di Informatica - Compito A
Prof. Marco Gavanelli
17 gennaio 2018
1 Esercizio (punti 16)
Da mesi, il terribile criminale Malvagik attanaglia la città in una spirale di violenza. I suoi delitti spaziano su tutta la città, senza che la polizia riesca ad acciuffarlo. Ultimamente, però, qualcuno nella polizia ha ipotizzato che, fra i vari delitti di Malvagik, gli omicidi siano distribuiti nella mappa della città con un criterio: se si riesce ad indovinare il criterio, sarà possibile sapere in anticipo dove avverrà il prossimo omicidio.
Dagli archivi della polizia, è stato estratto un file di testo delitti.txt in cui sono riportati i delitti di Malvagik. I delitti sono non più di 100; per ciascun delitto sono riportati:
- tipo del delitto: stringa contenente al più 20 caratteri, senza spazi
- coordinate x e y: due interi (compresi fra 0 e 9), che rappresentano la posizione in cui è avvenuto il delitto
A questo punto, voi dovete mostrare una mappa 10×10, che mostri con un asterisco la posizione dei soli crimini di tipo omicidio e con uno spazio le rimanenti posizioni. Riuscirete, osservando la mappa, a scoprire dove avverrà il prossimo omicidio di Malvagik?
Scrivete un programma C organizzato come segue:
- main: nel
main
, si invochi una funzione di lettura (da realizzare al punto 2), una di elaborazione (punto 3) ed una di visualizzazione della mappa (punto 4) - lettura: la funzione di lettura deve leggere il file delitti.txt e portarne il contenuto in un opportuno array di strutture; deve inoltre visualizzare a video l'array
- elabora: la funzione di elaborazione prende come parametri
- l'array letto al punto 2
- una matrice 10×10 di
char
- inizializzare la matrice con uno spazio in ogni cella
- poi, per ciascun delitto del tipo "Omicidio", dovrà riportare nella corrispondente cella della matrice un carattere asterisco '*'. Ad esempio, se è stato fatto un crimine di tipo "Omicidio" alle coordinate (3,2), bisognerà riportare un asterisco nella cella (3,2) della matrice.
- visualizzazione: la funzione di visualizzazione della mappa visualizza sullo schermo il contenuto della matrice.
È indispensabile organizzare opportunamente il programma in procedure e funzioni; è quindi altamente consigliabile aggiungere altre procedure/funzioni oltre a quelle indicate esplicitamente nel testo.
2 Esercizio (punti 4)
Si supponga ora che, invece del file delitti.txt , la polizia abbia a disposizione due file:
- un file di testo misfatti.txt che contiene i crimini compiuti da Malvagik; per ciascun crimine, viene riportato
- tipo del delitto: stringa contenente al più 20 caratteri, senza spazi
- l'indirizzo a cui è avvenuto il crimine, costituito da
- nome della via: stringa contenente al massimo 20 caratteri, senza spazi
- numero civico: intero
- un file di testo indirizzi.txt che contiene, per ciascun indirizzo della città, le coordinate a cui si trova quell'indirizzo. Per ciascun indirizzo il file contiene quindi:
- nome della via: stringa contenente al massimo 20 caratteri, senza spazi
- numero civico: intero
- x e y: due interi, compresi fra 0 e 9
Gli indirizzi nel file indirizzi.txt sono al massimo 200.
Si risolva il problema utilizzando i due file misfatti.txt e indirizzi.txt.
È indispensabile organizzare il programma in opportune procedure e/o funzioni.
Qualora si svolga solo l'esercizio 1, si può svolgere tutto l'esercizio su un unico file.
Qualora si svolga anche l'esercizio 2, si consegnino i file:
- un file
COGNOME.c
(dove COGNOME va sostituito col cognome dello studente) che contiene ilmain
e le funzioni usate solo nell'esercizio 1 - un file
facoltativo.c
che contiene ilmain
e le funzioni usate solo nell'esercizio 2 - un file
funzioni.c
che contiene le funzioni comuni
più tutti i file header ritenuti necessari.
Nella correzione, il docente creerà due progetti: