Abbiamo già visto come utilizzare i vettori in C++, in questa lezione faremo un riepilogo di quanto appreso.


I Vettori in C++ – Primo esercizio

Caricare un vettore di N elementi con numeri interi inseriti da tastiera.

Si dichiara un intero N e si chiede all’utente di inserire il valore da tastiera. Con un ciclo do-while controlliamo questo valore e se è minore o uguale a 0, richiediamo l’inserimento.

Dopo dichiariamo un vettore di N elementi int v[N].

Poi con un ciclo for, con un indice i che scorre il vettore dalla prima posizione, inseriamo gli elementi.

Supponendo che N è 5, inseriamo i seguenti valori da tastiera: 3, 5, 12, -2, 9.

Banner Pubblicitario

Partendo da sinistra si avrà dunque:

v[0]=3, v[1]=5, v[2]=12, v[3]=-2, v[4]=9.

L’indice varia da 0 a 4 (cioè N-1).

Ecco dunque cosa otterremo:

vettori inserimento

Scriviamo quindi l’algoritmo in C++:

#include <iostream>
using namespace std;

int main() {
    // Dichiarazione delle variabili
    int N;
    
    // Input della dimensione dell'array
    do {
        cout << "Inserisci N: ";
        cin >> N;
    } while (N <= 0);
    
    // Dichiarazione dell'array di dimensione N
    int v[N];
    
    // Input dei valori nell'array
    for(int i = 0; i < N; i++) {
        cout << "Inserisci un numero: ";
        cin >> v[i]; 
    }

    return 0;
}

N.B. In realtà non è possibile dichiarare un array di dimensione variabile in C++. L’array deve avere una dimensione costante nota a tempo di compilazione. Ma alcune implementazioni di compilatori C++ consentono l’allocazione di array di dimensione variabile in fase di esecuzione, anche se non è standard secondo lo standard del linguaggio C++. Ecco perchè nei prossimi esempi utilizzerò N costante.

Parlo di array dinamici nel libro disponibile su Amazon:

Banner pubblicitario

Secondo esempio sui vettori in C++

Visualizzare il vettore precedentemente caricato dalla prima all’ultima posizione.

Per visualizzare il vettore basta realizzare un ciclo for che parte dalla prima posizione fino all’ultima e per ogni iterazione si stampa l’i-esimo elemento.

Quindi aggiungete il codice che segue all’algoritmo precedente poco prima del return 0.

cout << "Visualizzo gli elementi!\n";
	for(int i = 0; i < N; i++) {
		cout << v[i] <<'\t';
	}

N.B. Se invece volessimo visualizzare gli elementi dall’ultima posizione del vettore alla prima, potremmo far partire l’indice da N-1 e a mano a mano decrementarlo fino ad arrivare a 0.

Ecco dunque la soluzione. Inserite il codice anche sotto il precedente per vedere la differenza.

cout << "Visualizzo gli elementi a partire dall'ultimo numero'!\n";
	for(int i = N - 1; i >= 0; i--) {
		cout << v[i] << '\t';
	}

Terzo esempio – Modificare elementi di un vettore

Utilizziamo i vettori in C++ per modificare gli elementi in esso presenti.

Inserire N elementi in un vettore, visualizzarli in ordine crescente. Dopo modificare solo gli elementi pari moltiplicandoli per 3 e visualizzare gli elementi in ordine decrescente.

Quindi ripetiamo i passaggi fatti nel primo esercizio per inserire gli elementi nel vettore.

Dopo visualizziamo il vettore così come spiegato nell’esempio 2.

Poi modifichiamo solo gli elementi pari del vettore e li moltiplichiamo per 3. Attenzione non gli elementi con indice pari!

Infine visualizziamo il vettore in ordine inverso così come spiegato nell’esempio 2.

Ecco il codice completo:

#include <iostream>
using namespace std;

const int N = 5; // Dimensione costante dell'array

int main() {
    int v[N];

    // Input dei valori nell'array
    for (int i = 0; i < N; i++) {
        cout << "Inserisci un numero: ";
        cin >> v[i];
    }

    // Visualizzazione degli elementi originali dell'array
    cout << "Visualizzo gli elementi!" << endl;
    for (int i = 0; i < N; i++) {
        cout << v[i] << '\t';
    }

    // Modifica degli elementi pari dell'array
    for (int i = 0; i < N; i++) {
        if (v[i] % 2 == 0)
            v[i] *= 3;
    }

    // Visualizzazione degli elementi modificati dell'array
    cout << "\nVisualizzo gli elementi modificati!" << endl;
    for (int i = N - 1; i >= 0; i--) {
        cout << v[i] << '\t';
    }

    return 0;
}

Quarto esempio

In questo esempio modifichiamo gli elementi con indice dispari aggiungendo il valore 100. Visualizzarli poi in ordine decrescente.

L’esercizio è simile al precedente, basta cambiare questo punto:

for (int i = 0; i < N; i++) {
	if (v[i] % 2 == 0)
		v[i] *= 3;
}

Con questo:

for (int i = 0; i < N; i++) {
	if (i % 2 != 0)
		v[i] += 100;
}

Cioè non devo guardare l’elemento ma l’indice dispari. Basta controllare dunque che il resto della divisione di i diviso 2 sia diverso da zero. Se tale condizione è vera aggiungiamo all’elemento il valore 100.

Ecco il codice completo:

#include <iostream>
using namespace std;

const int N = 5; // Dimensione costante dell'array

int main() {
    // Dichiarazione dell'array di dimensione N
    int v[N];

    // Input dei valori nell'array
    for (int i = 0; i < N; i++) {
        cout << "Inserisci un numero: ";
        cin >> v[i];
    }

    // Visualizzazione degli elementi originali dell'array
    cout << "Visualizzo gli elementi!" << endl;
    for (int i = 0; i < N; i++) {
        cout << v[i] << '\t';
    }

    // Modifica degli elementi in posizioni dispari dell'array
    for (int i = 0; i < N; i++) {
        if (i % 2 != 0)
            v[i] += 100;
    }

    // Visualizzazione degli elementi modificati dell'array
    cout << "\nVisualizzo gli elementi modificati!" << endl;
    for (int i = N - 1; i >= 0; i--) {
        cout << v[i] << '\t';
    }

    return 0;
}

Sommare gli elementi di un vettore

Utilizziamo i vettori in C++ per effettuare la somma degli elementi.

Inseriamo N elementi in un vettore. Li sommiamo e visualizziamo poi il vettore in ordine crescente e la somma.

Quindi in definitiva ripetiamo alcuni passaggi già visti per l’inserimento degli elementi nel vettore.

Poi con un ciclo for sommiamo gli elementi in una variabile s, precedentemente inizializzata a 0, e li visualizziamo.

Infine visualizziamo la somma.

Ecco dunque il codice completo:

#include <iostream>
using namespace std;

const int N = 5; // Dimensione costante dell'array

int main() {
    int s = 0; 
    // Dichiarazione dell'array di dimensione N
    int v[N];
    
    // Input dei valori nell'array e calcolo della somma
    for (int i = 0; i < N; i++) {
        cout << "Inserisci un numero: ";
        cin >> v[i];
        s += v[i];
    }
    
    // Visualizzazione degli elementi dell'array
    cout << "Visualizzo gli elementi!" << endl;
    for (int i = 0; i < N; i++) {
        cout << v[i] << '\t';
    }

    // Visualizzazione della somma degli elementi
    cout << "\nLa somma e': " << s << endl;

    return 0;
}

Nella prossima lezione proporrò ancora alcuni esercizi su come utilizzare i vettori in C++.

Alcuni link utili

Indice argomenti linguaggio C++

Alcuni link utili

Indice argomenti linguaggio C++

Array o vettori in C++

Esercitazione sugli array in C++

Massimo elemento di un vettore

Esercizi con gli array

Ricerca sequenziale in C++

Ricerca in un array ordinato

Array con numeri random

Ricerca binaria