In questa lezione risolveremo un semplice esercizio sui vettori in C++, al fine di capire meglio gli argomenti trattati finora.
a) Inserire gli elementi da tastiera nei due vettori.
b) Moltiplicare gli elementi di indice pari del primo vettore per gli elementi di indice pari del secondo vettore e memorizzarli in un altro vettore C di 5 elementi. Visualizzare il vettore C in ordine decrescente.
Fondamenti solidi di programmazione
Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.
- ⏱️ 9 ore di corso registrato
- 🧩 Più di 50 algoritmi risolti passo passo
- 🎯 Livello base
- 💻 100% online, fruibile quando vuoi
d) Visualizzare il vettore D in ordine crescente.
e) Fare lo stesso per il vettore B e memorizzare le somme in un altro vettore E.
f) Visualizzare il vettore E ottenuto.
g) Unire i due vettori in un unico vettore F e visualizzarlo.
Procedimento esercizio sui vettori in C++
Innanzitutto dichiariamo i vettori necessari per il nostro algoritmo.
Quindi chiediamo all'utente di inserire gli elementi del primo vettore e poi quelli del secondo.
Dopo utilizziamo un ciclo for che scorre i vettori A e B e se l'indice è pari sommiamo i valori in un vettore C.
Utilizziamo un indice j che parte da 0 e arriva a 4, infatti lo incrementeremo di volta in volta solo se i è pari.
Dunque, considerando che gli elementi di indice pari sono: 0, 2, 4, 6, 8.
In tutto il vettore C avrà 5 elementi.
j = 0;
for (int i = 0; i < N; i++) {
if (i % 2 == 0){
C[j] = A[i] * B[i];
j++;
}
}
Attenzione, quanto sopra descritto si può scrivere anche in maniera più elegante ed efficiente, evitando di utilizzare un if, incrementando la i ogni volta di 2. In questo modo:
j = 0;
for (int i = 0; i < N; i += 2) {
C[j] = A[i] * B[i];
j++;
}
Dopo visualizziamo gli elementi del vettore C in ordine decrescente, partendo dall'indice 4 e dunque da N/2-1 fino ad arrivare a 0 compreso.
cout << "Visualizzo gli elementi di c!\n";
for (int i = (N/2 - 1); i >= 0; i--) {
cout << "indice: " << i << " elemento " << c[i] << endl;
}
Poi analizziamo gli elementi di indice pari del vettore A e sommiamo gli elementi memorizzandoli in un altro vettore D.
Utilizziamo un indice j che va da 0 a 4, pertanto dobbiamo inizializzare nuovamente a 0 l'indice j.
Quindi possiamo scrivere:
j = 0
for (int i = 0; i < N; i += 2) {
D[j] = A[i] + A[i+1];
j++;
}
Ripetiamo poi lo stesso procedimento sommando gli elementi del vettore B e memorizzandoli in un vettore E.
Infine dobbiamo unire i due vettori.
Per farlo utilizziamo un ciclo for e se l'indice i è minore di N/2, cioè esattamente la metà, inseriremo nel vettore F gli elementi di D, altrimenti gli elementi di E. Notate che ho inserito l'istruzione:
F[j] = E[i - N/2];
Perché in questo modo riporto l'indice a 0, difatti deve aggiungere gli elementi del vettore E partendo dall'indice 0, invece nel punto in cui siamo la i vale 5.
j = 0;
for (int i = 0; i < N; i++) {
if(i < N / 2){
F[j] = D[i];
}
else {
F[j] = E[i - N / 2];
}
j++;
}
Ecco dunque il codice completo:
#include <iostream>
using namespace std;
#define N 10
int main() {
int j;
int A[N], B[N], C[N/2], D[N/2], E[N/2], F[N];
// Inserimento degli elementi nei vettori A e B
for (int i = 0; i < N; i++) {
cout << "Vettore a: ";
cin >> A[i];
}
for (int i = 0; i < N; i++) {
cout << "Vettore b: ";
cin >> B[i];
}
// Calcolo degli elementi del vettore C
j = 0;
for (int i = 0; i < N; i += 2) {
C[j] = A[i] * B[i];
j++;
}
// Visualizzazione del vettore C in ordine decrescente
cout << "Visualizzo gli elementi di c!\n";
for (int i = N/2 - 1; i >= 0; i--) {
cout << "indice: " << i << " elemento " << C[i] << endl;
}
// Calcolo degli elementi del vettore D
j = 0;
for (int i = 0; i < N; i += 2) {
D[j] = A[i] + A[i + 1];
j++;
}
// Visualizzazione del vettore D in ordine crescente
cout << "Visualizzo gli elementi di d!\n";
for (int i = 0; i < N/2; i++) {
cout << "Elemento in posizione: " << i << " valore: " << D[i] << endl;
}
// Calcolo degli elementi del vettore E
j = 0;
for (int i = 0; i < N; i += 2) {
E[j] = B[i] + B[i + 1];
j++;
}
// Visualizzazione del vettore E
cout << "Visualizzo gli elementi di e!\n";
for (int i = 0; i < N/2; i++) {
cout << "Elemento in posizione: " << i << " valore: " << E[i] << endl;
}
// Unione dei vettori D ed E in un unico vettore F
for (int i = 0; i < N/2; i++) {
F[i] = D[i];
F[N/2 + i] = E[i];
}
cout << "Visualizzo gli elementi di f!\n";
for (int i = 0; i < N; i++) {
cout << "Elemento in posizione: " << i << " valore: " << F[i] << endl;
}
return 0;
}
Questa è solo una possibile soluzione all'esercizio sui vettori in C++, proponete pure la vostra.
Alcuni link utili
Indice argomenti linguaggio C++
Array o vettori in C++
Approfondimento vettori in C++
Esercitazione sugli array in C++
Massimo elemento di un vettore
Esercizi con gli array
Ricerca sequenziale in C++
📘 Vuoi approfondire l'argomento? Dai un'occhiata a 50 Algoritmi per imparare C++ — vedi su Amazon.
Ricerca in un array ordinato
Array con numeri random
Ricerca binaria