L'obiettivo di questa esercitazione è familiarizzare con gli array, illustrati nel capitolo 4 del libro. Gli esercizi sono piuttosto semplici, quindi dovreste essere in grado di risolverli tutti o quasi.
Raccomandazioni: Ove non altrimenti indicato, rispondete alle domande prima ragionando su carta e poi provando a editare, compilare ed eseguire. Come vedrete, per poter lavorare sugli array è indispensabile conoscere le strutture di controllo della programmazione strutturata, viste nelle lezioni ed esercitazioni precedenti. Gli esercizi etichettati con l'asterisco (*) sono più difficili: affrontateli dopo aver risolto gli altri.
Obiettivo: Introduzione agli array unidimensionali.
Attività:
double
, li memorizza in un array e li visualizza. Usate
il ciclo for
e il ".length
".while
invece del
for
.double
, li memorizza in un array e li visualizza in
ordine invertito (dall'ultimo al primo).char
contengono gli stessi valori. La lunghezza dei due
array va letta in input durante l'esecuzione.boolean
contengono gli stessi valori.double
contengono gli stessi
valori. Suggerimento Non confrontate i numeri reali
con l'uguaglianza: nella rappresentazione in virgola mobile le cifre
meno significative vengono perse. Quindi per verificare l'uguaglianza
di due numeri reali (double
o float
) bisogna
verificare che siano uguali con una certa
approssimazione.Obiettivo: Introduzione agli array multimensionali.
Attività:
n * m
posizioni, con n
e
m
letti in input durante l'esecuzione. Fatevi
visualizzare la matrice per controllare.i
-esima, con i
letto in input
durante l'esecuzione. Fatevi visualizzare la matrice per
controllare.j
-esima, con j
letto in input durante
l'esecuzione. Fatevi visualizzare la matrice per controllare.j
-esima il valore dell'indice di riga
corrispondente (ossia: 0
ad a[0][j]
,
1
ad a[1][j]
, e così via), sempre con
j
letto in input durante l'esecuzione. Fatevi
visualizzare la matrice per controllare.n * n
).
Aggiungete poi le istruzioni per assegnare 1 alla diagonale inversa
(quella che va da in alto a destra a in basso a sinistra). Usate un
unico ciclo. Fatevi visualizzare la matrice per
controllare. Suggerimento Scrivete le coppie di
indici degli elementi sulla diagonale inversa, ed esprimete quei
valori in funzione della variabile di controllo del ciclo.0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0
boolean
i valori true
e false
in modo alternato, come su una scacchiera:
true false true false ... false true false true ... true false true false ... false true false true ... ...Suggerimento Che proprietà ha la somma degli indici di riga e colonna delle celle con valore
true
?
Oppure: che funzione booleana usare per passare da un valore al
"successivo"?Obiettivo: Altri esercizi su array.
Attività:
n
numeri
primi (con n
letto in input durante l'esecuzione) e li
visualizza in ordine invertito (dal più grande al più
piccolo). Suggerimento Memorizzate i numeri primi in
un array di n
posizioni.n
letto in input durante
l'esecuzione (nella prima colonna dell'array) e i loro esponenti
(seconda colonna). Visualizzate l'array in modo opportuno.matriciona
, una
matrice quadridimensionale 32 * 13 * 25 * 61
di
double
. Azzeratene tutti gli elementi. Questa matrice
è in grado di memorizzare tutti i valori delle temperature per
ogni minuto di ogni giorno dell'anno corrente:
matriciona[12][1][14][55]
rappresenta la temperatura alle
14:55 del 12 gennaio. Assegnate alcuni valori di prova, poi
visualizzate la matriciona in modo adeguato senza visualizzare i
valori che non corrispondono a nessun giorno reale, come ad esempio il
30 febbraio (assumete l'anno non bisestile e usate un array di interi
in cui memorizzare il numero di giorni di ciascun mese).matriciona
" con uno
più adeguato.int
,
ne legge in input i valori e visualizza tutti gli elementi con indice
pari.int
,
ne legge in input i valori e visualizza tutti gli elementi con
valore pari.