Programmazione

Esempio di matrice

Un file memorizza una matrice di interi positivi minori di 100. Nella prima riga sono presenti il numero di righe (NR) ed il numero di colonne (NC) della matrice. Seguono i dati della matrice. Ogni riga del file contiene un numero di dati pari al numero di colonne della matrice.

Il programma dovrà:

  1. leggere un file del tipo descritto e memorizzare il contenuto utilizzando una struttura dati opportuna.
  2. stampare a video la matrice letta, quindi il valor medio calcolato escludendo il massimo ed il minimo della matrice.
  3. stampare (eventualmente su file) una nuova matrice nello stesso formato della matrice letta che abbia le righe riordinate in maniera decrescente in base al primo valore di ogni riga (se i primi valori sono uguali si considerino i secondi, e così via).

Esempio di file:

9 10
10 11 37 48 67 21 87 16 98 63
26 80 78 10 53 11 76 86 87 90
23 12 66 34 83 73 82 27 17  1
84 63 72 81  0 92 76 85 76 52
95 28 20  1 26 54 74 11 21 13
55 82 72 37 87 15 34 35  6 17
19 43 14 55 97 40 24 90 46 16
95 28 10  1 26 54 74 11 21 13
76 95 48 14 31  0 57 51 39 43

Esempio di strutture

Un file che contiene informazioni relative a file di una cartella è strutturato nel seguente modo:

Il programma dovrà:

  1. leggere un file del tipo descritto e memorizzare il contenuto utilizzando una struttura dati opportuna.
  2. presentare a video l'occupazione totale di tutti i file.
  3. stampare (eventualmente su file) le informazioni ordinate per data.
  4. presentare a video l'occupazione totale dei file modificati nell'ultimo mese.

Esempio di file di dati


Numero di file: 20
91030 leone      11 feb 2015 Dato.java
35119 ciampi     22 gen 2015 Dato.class
  666 scalfaro   17 apr 2015 Esame.java
  560 ciampi     30 mag 2015 Esame.class
84324 scalfaro   25 mar 2015 Esame.html
91825 leone       4 set 2015 esempio
85018 cossiga    28 lug 2015 esempio.txt
 1509 pertini    23 mag 2015 lista.txt
78477 saragat    28 gen 2015 Lista.java
97770 leone       3 mar 2015 Lista.class
18495 scalfaro    7 giu 2015 Lista.html
63664 saragat    21 mag 2015 index.html
 4078 ciampi     21 mar 2015 tmp012.txt
49265 cossiga    14 mag 2015 tmp013.txt
23905 ciampi     15 mar 2015 tmp014.txt
37824 gronchi    24 mag 2015 tesi.doc
62215 scalfaro    7 ago 2015 tesi.pdf
 2716 ciampi      6 set 2015 introduzione.txt
20701 napolitano 10 set 2015 introduzione.pdf
37100 napolitano 14 set 2015 file0019.tmp

Esempio di matrice triangolare

Un file memorizza una matrice triangolare di interi positivi minori di 100 (da considerarsi come una matrice quadrata simmetrica). Nella prima riga è presente la dimensione della matrice. Seguono i dati della matrice.

Il programma dovrà:

  1. leggere un file del tipo descritto e memorizzare il contenuto utilizzando una struttura dati opportuna.
  2. stampare la matrice letta, il valor medio di ogni riga (completa) e dell'intera matrice quadrata.
  3. stampare una nuova matrice di dimensione metà in cui ogni valore è la media di 4 valori corrispondenti della matrice originale
    nuova[i][j] = (vecchia[i*2][j*2]+vecchia[i*2][j*2+1]+vecchia[i*2+1][j*2]+vecchia[i*2+1][j*2+1])/4

Esempio di file:

8
51
77 36
46 17 51
89 55 20 82
80 57 56 28 31
41 15 72 18 69 25
58 81 43 60 22 96  9
97 04 87 36 51 98 76 73

Esempio di immagine

Un file, contenente la codifica di una immagine a toni di grigio, è organizzato nel seguente modo:

Il programma dovrà:

  1. leggere un file del tipo descritto e memorizzare il contenuto utilizzando una struttura dati opportuna.
  2. contare il numero di valori (pixel) diversi da 0 e calcolare il loro valor medio.
  3. supponendo che l'immagine rappresenti un oggetto (un valore uguale a 0 indica lo sfondo, un valore diverso la presenza dell'oggetto) si dovrà creare un file con lo stesso formato che contenga solo il "contorno".

esempio:                                  contorno:

P2                                        P2
10 7                                      10 7
255                                       255
  0   0   0   0   0   0   0   0   0   0     0   0   0   0   0   0   0   0   0   0
  0 126 128 132   1   0   0   0   0   0     0 126 128 132   1   0   0   0   0   0
  0   0  86 234  45  15  18  20   0   0     0   0  86   0  45  15  18  20   0   0
  0   0  86 214  15  25  19  20   0   0     0   0  86   0   0   0   0  20   0   0
  0   1  76  34  48  95  11   0   0   0     0   1  76  34  48  95  11   0   0   0
  0   1   0   0   0   0   0   0   0   0     0   1   0   0   0   0   0   0   0   0
  0   0   0   0   0   0   0   0   0   0     0   0   0   0   0   0   0   0   0   0

Il programma dovrà analizzare la riga di comando ed implementare il seguente comportamento:

  1. In assenza di parametri dovrà eseguire il programma utizzando il file "esempio.pgm".
  2. Altrimenti il primo argomento è il nome del file da leggere.
  3. Se presente il secondo argomento è il nome del file in cui salvare il "contorno", se assente il "contorno" viene presentato a video.

Il formato descritto è una semplificazione delle immagini "PGM" (partable gray map).

Esempio di file:

P2
30 20
255
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 255   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0 249 244 242 242 242 244 249   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0 252 244 236 231 229 229 229 231 236 244 252   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0 252 242 234 226 218 216 216 216 218 226 234 242 252   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0 244 234 224 216 208 203 203 203 208 216 224 234 244   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0 249 236 226 216 206 198 190 190 190 198 206 216 226 236 249   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0 244 231 218 208 198 188 180 177 180 188 198 208 218 231 244   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0 242 229 216 203 190 180 170 164 170 180 190 203 216 229 242   0   0   0   0   0   0   0
0   0   0   0   0   0   0 255 242 229 216 203 190 177 164 151 164 177 190 203 216 229 242 255   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 164 170 180 190 203 216 229 242   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 177 180 188 198 208 218 231 244   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 190 190 198 206 216 226 236 249   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 203 203 208 216 224 234 244   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 216 216 218 226 234 242 252   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 229 229 231 236 244 252   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 242 242 244 249   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 255   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0

File esempio.pgm contorno risultante