Salta ai contenuti. | Salta alla navigazione

Strumenti personali

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:

  1. 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)
  2. 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
  3. elabora: la funzione di elaborazione prende come parametri
    • l'array letto al punto 2
    • una matrice 10×10 di char
    (più eventualmente altri parametri) e deve
    • 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.
  4. 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 il main e le funzioni usate solo nell'esercizio 1
  • un file facoltativo.c che contiene il main 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:

  • in uno, inserirà i file COGNOME.c e funzioni.c . L'eseguibile che viene creato dovrà risolvere l'esercizio 1.
  • nell'altro, inserirà i file facoltativo.c e funzioni.c . L'eseguibile che viene creato dovrà risolvere l'esercizio 2.