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.
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:
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:
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++
Esercitazione sugli array in C++
Massimo elemento di un vettore