Semplici algoritmi su arrays
Inizializzazione di arrays
Un array può essere inizializzato con delle costanti al momento della dichiarazione nel modo seguente:
int[] v = {2, 5, 4, 3, 0, 6, 9};
invece di
int[] v = new int[7];
e dover poi immettere singolarmente i valori da input.
In questo modo la lunghezza dell'array è definita implicitamente attraverso il numero di elementi elencati nelle parentesi graffe.
Questa modalità di inizializzazione è utile soprattutto nella fase di messa a punto di un programma,
poiché evita di dover sempre immettere manualmente i valori da memorizzare nell'array a ogni tentativo di esecuzione.
Primo esercizio
Scrivere un programma che:
Secondo esercizio
Scrivere un programma che:
- legge da tastiera un intero n;
- alloca un array di
double
di lunghezza n;
- lo inizializza con numeri reali pseudocasuali compresi nell'intervallo [0, 1);
- stampa l'array creato;
- calcola e stampa la media degli elementi nell'array;
- crea altri due array, chiamati
underMedia
e overMedia
,
nei quali devono essere copiati rispettivamente gli elementi minori della media e gli
elementi maggiori o uguali alla media.
- stampa i due array creati contenenti gli elementi minori e maggiori o uguali alla media.
Ad esempio, se l'array contenesse i valori (0.96, 0.2, 0.4, 0.1, 0.55, 0.03, 0.88),
poiché la media è 0.4457, si dovrebbero creare e stampare i due array (0.2, 0.4, 0.1, 0.03) e (0.96, 0.55, 0.88)
Suggerimenti:
- prima di creare gli array è necessario calcolarne la dimensione,
contando quanti sono gli elementi minori della media e quanti sono quelli maggiori
o uguali alla media.
- una volta allocati gli array, per copiare gli elementi è necessario
tenere traccia di tre posizioni (indici):
- la posizione dalla quale si deve prelevare l'elemento dal primo array,
- la posizione nella quale deve essere depositato l'elemento (se minore della
media) nell'array
underMedia
,
- la posizione nella quale deve essere depositato l'elemento (se maggiore o
uguale alla media) nell'array
overMedia
.
Ciascuno di questi indici deve essere inizializzato opportunamente e incrementato
quando necessario.
Terzo esercizio
Scrivere un programma che:
- legge da tastiera un intero n;
- alloca due array di
int
, ciascuno di lunghezza n;
- inizializza i due array con interi pseudocasuali compresi nell'intervallo [0, 15], estremi compresi.
Inizialmente si consiglia di lavorare su array inizializzati con valori noti usando il costrutto int a = { , , , }
- stampa gli elementi dell'array separati da virgole, andando a capo ogni 5 elementi;
- stampa gli elementi dell'intersezione dei due array. Decidere come trattare eventuali duplicati presenti nello stesso array
- stampa gli elementi dell'unione. Ciascun elemento presente sia nel primo che nel secondo array deve essere stampato una sola volta)