· Andrea Pollini · programmazione · 9 min read

7 Esercizi sugli array in C++

Raccolta di 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:

  1. Si includono le librerie necessarie (iostream per l’input/output e cstdlib per i numeri casuali).
  2. Si definiscono la dimensione dell’array (DIMENSIONE_ARRAY) e si dichiara l’array array di interi.
  3. Si inizializza la variabile somma a 0 per accumulare il totale.
  4. Un ciclo for viene utilizzato per riempire l’array array con numeri casuali da 0 a 100 utilizzando la funzione rand().
  5. (Facoltativo) Il ciclo for viene utilizzato anche per stampare i valori dell’array a scopo di verifica.
  6. Un altro ciclo for viene utilizzato per percorrere l’array array. All’interno del ciclo, il valore di ogni elemento viene aggiunto alla variabile somma.
  7. 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:

  1. Si includono le librerie necessarie (iostream per l’input/output e numeric per la funzione std::accumulate()).
  2. Si definiscono la dimensione dell’array (DIMENSIONE_ARRAY) e si dichiara l’array array di interi.
  3. Si riempie l’array array con numeri casuali da 0 a 100 utilizzando un ciclo for (analogamente al primo esempio).
  4. (Facoltativo) Il ciclo for viene utilizzato per stampare i valori dell’array a scopo di verifica.
  5. 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 elementi
    • array + DIMENSIONE_ARRAY: un puntatore all’elemento successivo all’ultimo elemento dell’array
    • 0: il valore iniziale per l’accumulatore (in questo caso, 0)
  6. 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:

  1. Si includono le librerie necessarie (iostream per l’input/output).
  2. Si definiscono le dimensioni (DIMENSIONE_ARRAY) e si dichiarano due array: arrayOriginale e arrayCopia.
  3. Si riempie l’arrayOriginale con numeri casuali da 0 a 100 usando un ciclo for.
  4. (Facoltativo) Si stampa l’arrayOriginale per verifica.
  5. Un ciclo for viene utilizzato per copiare ogni elemento dell’arrayOriginale nell’arrayCopia.
  6. Infine, si stampa l’arrayCopia per verificare la copia avvenuta.

7. Inversione di un Array:

Scrivere un programma C++ che:

  1. Dichiara un array di interi con dimensione 10.
  2. Assegna valori interi casuali (da 0 a 100) ad ogni elemento dell’array.
  3. Stampa l’array originale.
  4. Inverte l’ordine degli elementi dell’array.
  5. 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:

  1. Si includono le librerie necessarie (iostream, cstdlib per i numeri casuali e algorithm per std::swap()).
  2. Si definiscono la dimensione (DIMENSIONE_ARRAY) e si dichiara l’array array di interi.
  3. Si riempie l’array con numeri casuali da 0 a 100 usando un ciclo for e si stampa l’array originale.
  4. Un ciclo for viene utilizzato per invertire l’ordine degli elementi. All’interno del ciclo, si scambiano gli elementi array[i] e array[DIMENSIONE_ARRAY - i - 1] utilizzando la funzione std::swap(). Questo processo inverte l’ordine di ogni coppia di elementi, man mano che si procede dal centro dell’array verso i bordi.
  5. Infine, si stampa l’array invertito per verificarne il risultato.
    Back to Blog

    Related Posts

    View All Posts »
    50 Esercizi sul costrutto if/if..else/elif

    50 Esercizi sul costrutto if/if..else/elif

    Ecco una lista di 50 esercizi sul costrutto condizionale `if`, `if..else` e `elif` in C. Questi esercizi ti aiuteranno a capire come funzionano i costrutti condizionali e a scrivere algoritmi che fanno uso di essi. Prova a risolvere questi esercizi da solo e controlla le soluzioni per verificare la tua comprensione.