· Andrea Pollini · programmazione · 9 min read
7 Esercizi sugli array in C++
Raccolta di esercizi sugli array in C++

1. Inizializzare e Stampare un Array:
Scrivere un programma C++ che:
- Dichiara un array di interi con dimensione 10.
- Assegna valori interi consecutivi (da 0 a 9) ad ogni elemento dell’array.
- Stampa a schermo tutti i valori dell’array.
Soluzione:
#include <iostream>
int main() { int array[10]; // Dichiarazione array di 10 interi
// Assegnazione valori consecutivi for (int i = 0; i < 10; i++) { array[i] = i; }
// Stampa elementi dell'array std::cout << "Elementi dell'array: "; for (int i = 0; i < 10; i++) { std::cout << array[i] << " "; } std::cout << std::endl;
return 0;}
2. Ricerca di un Elemento in un Array:
Scrivere un programma C++ che:
- Dichiara un array di interi con dimensione 10.
- Riempie l’array con numeri casuali (da 0 a 100).
- Chiede all’utente di inserire un numero.
- Cerca il numero inserito all’interno dell’array.
- Stampa un messaggio se il numero è stato trovato (insieme alla sua posizione) o se non è stato trovato.
Soluzione:
#include <iostream>#include <cstdlib> // Per rand() e srand()#include <ctime> // Per time()
int main() { const int DIMENSIONE_ARRAY = 10; int array[DIMENSIONE_ARRAY];
// Semina generatore di numeri casuali srand(time(NULL));
// Riempimento array con numeri casuali for (int i = 0; i < DIMENSIONE_ARRAY; i++) { array[i] = rand() % 101; }
// Stampa array (facoltativo) std::cout << "Array generato: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << array[i] << " "; } std::cout << std::endl;
// Richiesta numero utente int numeroRicercato; std::cout << "Inserisci un numero da cercare: "; std::cin >> numeroRicercato;
// Ricerca elemento bool trovato = false; int posizione = 0; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { if (array[i] == numeroRicercato) { trovato = true; posizione = i; break; } }
// Stampa risultato ricerca if (trovato) { std::cout << "Numero " << numeroRicercato << " trovato in posizione " << posizione << std::endl; } else { std::cout << "Numero " << numeroRicercato << " non trovato nell'array." << std::endl; }
return 0;}
3. Somma degli Elementi di un Array:
Scrivere un programma C++ che:
- Dichiara un array di interi con dimensione 10.
- Assegna valori interi casuali (da 0 a 100) ad ogni elemento dell’array.
- Calcola e stampa la somma di tutti gli elementi dell’array.
Soluzione:
Sotto ci sono due modi per calcolare la somma degli elementi di un array in C++:
1. Ciclo For:
#include <iostream>
int main() { const int DIMENSIONE_ARRAY = 10; // Dimensione dell'array int array[DIMENSIONE_ARRAY]; // Dichiarazione array int somma = 0; // Variabile per la somma
// Riempimento array con valori casuali (da 0 a 100) for (int i = 0; i < DIMENSIONE_ARRAY; i++) { array[i] = rand() % 101; }
// Stampa array (facoltativo) std::cout << "Array: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << array[i] << " "; } std::cout << std::endl;
// Calcolo somma elementi for (int i = 0; i < DIMENSIONE_ARRAY; i++) { somma += array[i]; }
// Stampa somma std::cout << "Somma degli elementi: " << somma << std::endl;
return 0;}
Spiegazione:
- Si includono le librerie necessarie (
iostream
per l’input/output ecstdlib
per i numeri casuali). - Si definiscono la dimensione dell’array (
DIMENSIONE_ARRAY
) e si dichiara l’arrayarray
di interi. - Si inizializza la variabile
somma
a 0 per accumulare il totale. - Un ciclo
for
viene utilizzato per riempire l’arrayarray
con numeri casuali da 0 a 100 utilizzando la funzionerand()
. - (Facoltativo) Il ciclo
for
viene utilizzato anche per stampare i valori dell’array a scopo di verifica. - Un altro ciclo
for
viene utilizzato per percorrere l’arrayarray
. All’interno del ciclo, il valore di ogni elemento viene aggiunto alla variabilesomma
. - Infine, il valore della
somma
viene stampato a schermo.
2. Funzione std::accumulate()
:
#include <iostream>#include <numeric> // Per la funzione accumulate()
int main() { const int DIMENSIONE_ARRAY = 10; int array[DIMENSIONE_ARRAY];
// Riempimento array con valori casuali (da 0 a 100) for (int i = 0; i < DIMENSIONE_ARRAY; i++) { array[i] = rand() % 101; }
// Stampa array (facoltativo) std::cout << "Array: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << array[i] << " "; } std::cout << std::endl;
// Somma elementi con accumulate() int somma = std::accumulate(array, array + DIMENSIONE_ARRAY, 0);
// Stampa somma std::cout << "Somma degli elementi: " << somma << std::endl;
return 0;}
Spiegazione:
- Si includono le librerie necessarie (
iostream
per l’input/output enumeric
per la funzionestd::accumulate()
). - Si definiscono la dimensione dell’array (
DIMENSIONE_ARRAY
) e si dichiara l’arrayarray
di interi. - Si riempie l’array
array
con numeri casuali da 0 a 100 utilizzando un ciclofor
(analogamente al primo esempio). - (Facoltativo) Il ciclo
for
viene utilizzato per stampare i valori dell’array a scopo di verifica. - La funzione
std::accumulate()
viene utilizzata per calcolare la somma degli elementi dell’array. Essa prende tre argomenti:array
: l’array da cui sommare gli elementiarray + DIMENSIONE_ARRAY
: un puntatore all’elemento successivo all’ultimo elemento dell’array0
: il valore iniziale per l’accumulatore (in questo caso, 0)
- Il valore della somma viene stampato a schermo.
4. Ordinamento di un Array:
Scrivere un programma C++ che:
- Dichiara un array di interi con dimensione 10.
- Assegna valori interi casuali (da 0 a 100) ad ogni elemento dell’array.
- Ordina l’array in ordine crescente.
- Stampa l’array ordinato.
Soluzione:
#include <iostream>#include <cstdlib>#include <ctime>#include <algorithm> // Per la funzione sort()
int main() { const int DIMENSIONE_ARRAY = 10; int array[DIMENSIONE_ARRAY];
// Semina generatore di numeri casuali srand(time(NULL));
// Riempimento array con numeri casuali for (int i = 0; i < DIMENSIONE_ARRAY; i++) { array[i] = rand() % 101; }
// Stampa array non ordinato std::cout << "Array non ordinato: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << array[i] << " "; } std::cout << std::endl;
// Ordinamento array con sort() std::sort(array, array + DIMENSIONE_ARRAY);
// Stampa array ordinato std::cout << "Array ordinato: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << array[i] << " "; } std::cout << std::endl;
return 0;}
5. Elemento Massimo e Minimo in un Array:
Scrivere un programma C++ che:
- Dichiara un array di interi con dimensione 10.
- Assegna valori interi casuali (da 0 a 100) ad ogni elemento dell’array.
- Trova e stampa l’elemento massimo e l’elemento minimo all’interno dell’array.
Soluzione:
#include <iostream>#include <cstdlib>#include <ctime>#include <algorithm> // Per le funzioni max_element() e min_element()
int main() { const int DIMENSIONE_ARRAY = 10; int array[DIMENSIONE_ARRAY];
// Semina generatore di numeri casuali srand(time(NULL));
// Riempimento array con numeri casuali for (int i = 0; i < DIMENSIONE_ARRAY; i++) { array[i] = rand() % 101; }
// Stampa array (facoltativo) std::cout << "Array generato: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << array[i] << " "; } std::cout << std::endl;
// Elemento massimo int indiceMassimo = std::distance(array, std::max_element(array, array + DIMENSIONE_ARRAY)); int valoreMassimo = *std::max_element(array, array + DIMENSIONE_ARRAY);
// Elemento minimo int indiceMinimo = std::distance(array, std::min_element(array, array + DIMENSIONE_ARRAY)); int valoreMinimo = *std::min_element(array, array + DIMENSIONE_ARRAY);
// Stampa risultati std::cout << "Elemento massimo: " << valoreMassimo << " (posizione " << indiceMassimo << ")" << std::endl; std::cout << "Elemento minimo: " << valoreMinimo << " (posizione " << indiceMinimo << ")" << std::endl;
return 0;}
6. Copia di un Array in C++
#include <iostream>
int main() { const int DIMENSIONE_ARRAY = 10; int arrayOriginale[DIMENSIONE_ARRAY]; // Array originale int arrayCopia[DIMENSIONE_ARRAY]; // Array copia
// Riempimento array originale con valori casuali (da 0 a 100) for (int i = 0; i < DIMENSIONE_ARRAY; i++) { arrayOriginale[i] = rand() % 101; }
// Stampa array originale (facoltativo) std::cout << "Array originale: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << arrayOriginale[i] << " "; } std::cout << std::endl;
// Copia elemento per elemento for (int i = 0; i < DIMENSIONE_ARRAY; i++) { arrayCopia[i] = arrayOriginale[i]; }
// Stampa array copia std::cout << "Array copia: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << arrayCopia[i] << " "; } std::cout << std::endl;
return 0;}
Spiegazione:
- Si includono le librerie necessarie (
iostream
per l’input/output). - Si definiscono le dimensioni (
DIMENSIONE_ARRAY
) e si dichiarano due array:arrayOriginale
earrayCopia
. - Si riempie l’
arrayOriginale
con numeri casuali da 0 a 100 usando un ciclofor
. - (Facoltativo) Si stampa l’
arrayOriginale
per verifica. - Un ciclo
for
viene utilizzato per copiare ogni elemento dell’arrayOriginale
nell’arrayCopia
. - Infine, si stampa l’
arrayCopia
per verificare la copia avvenuta.
7. Inversione di un Array:
Scrivere un programma C++ che:
- Dichiara un array di interi con dimensione 10.
- Assegna valori interi casuali (da 0 a 100) ad ogni elemento dell’array.
- Stampa l’array originale.
- Inverte l’ordine degli elementi dell’array.
- Stampa l’array invertito.
Suggerimenti:
- Puoi utilizzare un ciclo
for
per scorrere l’array in un verso e un altro per scambiare gli elementi. - Puoi anche utilizzare la funzione
std::swap()
per scambiare due elementi alla volta.
Soluzione:
#include <iostream>#include <cstdlib>#include <algorithm> // Per std::swap()
int main() { const int DIMENSIONE_ARRAY = 10; int array[DIMENSIONE_ARRAY];
// Riempimento array con valori casuali (da 0 a 100) for (int i = 0; i < DIMENSIONE_ARRAY; i++) { array[i] = rand() % 101; }
// Stampa array originale std::cout << "Array originale: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << array[i] << " "; } std::cout << std::endl;
// Inversione array for (int i = 0; i < DIMENSIONE_ARRAY / 2; i++) { std::swap(array[i], array[DIMENSIONE_ARRAY - i - 1]); }
// Stampa array invertito std::cout << "Array invertito: "; for (int i = 0; i < DIMENSIONE_ARRAY; i++) { std::cout << array[i] << " "; } std::cout << std::endl;
return 0;}
Spiegazione:
- Si includono le librerie necessarie (
iostream
,cstdlib
per i numeri casuali ealgorithm
perstd::swap()
). - Si definiscono la dimensione (
DIMENSIONE_ARRAY
) e si dichiara l’arrayarray
di interi. - Si riempie l’
array
con numeri casuali da 0 a 100 usando un ciclofor
e si stampa l’array originale. - Un ciclo
for
viene utilizzato per invertire l’ordine degli elementi. All’interno del ciclo, si scambiano gli elementiarray[i]
earray[DIMENSIONE_ARRAY - i - 1]
utilizzando la funzionestd::swap()
. Questo processo inverte l’ordine di ogni coppia di elementi, man mano che si procede dal centro dell’array verso i bordi. - Infine, si stampa l’array invertito per verificarne il risultato.