Cos'è un array
Un array è una struttura dati omogenea: contiene molti dati, tutti dello stesso tipo, raccolti sotto un unico nome. Si divide in due famiglie: i vettori (a una dimensione) e le matrici (a due dimensioni).
I vettori
Un vettore è monodimensionale: una sola riga di N celle (dimensione 1 × N). Ogni cella è individuata da un indice, una variabile che ne rappresenta la posizione. Gli indici vanno da 0 a N−1.
const int N = 5; int v[N]; // 5 celle: v[0]..v[4] for (int i = 0; i < N; i++) cin >> v[i]; // riempimento for (int i = 0; i < N; i++) cout << v[i]; // lettura
Le matrici
Una matrice è bidimensionale: una tabella di N righe e M colonne (dimensione N × M). Ogni cella è individuata da due indici: i per la riga (0 ≤ i ≤ N−1) e j per la colonna (0 ≤ j ≤ M−1).
const int R = 3, C = 4; int m[R][C]; for (int i = 0; i < R; i++) // righe for (int j = 0; j < C; j++) // colonne cin >> m[i][j];
L'ordinamento
Un'operazione fondamentale sui vettori è ordinare gli elementi. Gli algoritmi più semplici da capire sono il bubble sort e il selection sort: confrontano coppie di elementi e li scambiano quando sono nell'ordine sbagliato.
void bubbleSort(int v[], const int N) { for (int i = 0; i < N - 1; i++) for (int j = 0; j < N - 1 - i; j++) if (v[j] > v[j + 1]) { // fuori ordine: scambia int t = v[j]; v[j] = v[j + 1]; v[j + 1] = t; } }
Gli esercizi
Sei gruppi di esercizi: vettori, matrici e algoritmi di ordinamento, ognuno in versione base e avanzata.
Vettori
Soluzioni · Vettori base
Soluzioni · Vettori avanzati
Gli esercizi 4–8 e 10 (rimozione duplicati, inserimento ordinato, rotazione, fusione, prodotto scalare, vettore palindromo) seguono gli stessi schemi.
Matrici
Soluzioni · Matrici base
Soluzioni · Matrici avanzati
Gli esercizi 2, 4, 6, 8–10 (prodotto righe×colonne, identità, massimo per riga, triangolare, cornice, righe sopra soglia) seguono gli stessi schemi di scansione a doppio indice.
Ordinamento
Soluzioni · Ordinamento base
Soluzioni · Ordinamento avanzati
Gli esercizi 2, 3, 4, 6, 7, 8 (ordina e cerca, conta confronti, valore assoluto, selection decrescente, k-esimo, fusione) seguono gli stessi schemi.