· 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.