
In questa lezione risolveremo un semplice esercizio sui vettori in C++, al fine di capire meglio gli argomenti trattati finora.
Dati due vettori A e B di dimensione 10:
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.
c) Sommare gli elementi a due a due del vettore A e memorizzarli in un altro vettore D di 5 elementi.
In questo modo: D[0]=A[0]+A[1] poi D[1]=A[2]+A[3]
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 4
int main() {
int j;
int A[N], B[N], C[N/2], D[N/2], E[N/2], F[N/2];
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];
}
j=0;
for (int i=0;i<N;i+=2) {
C[j]=A[i]*B[i];
j++;
}
cout<<"Visualizzo gli elementi di c!\n";
for (int i=N/2-1;i>=0;i--) {
cout<<"indice: "<<i<<" elemento "<<C[i]<<endl;
}
j=0;
for (int i=0;i<N;i+=2) {
D[j]=A[i]+A[i+1];
j++;
}
cout<<"Visualizzo gli elementi di d!\n";
for (int i=0;i<N/2;i++) {
cout<<"Elemento in posizione: "<<i<<" valore: "<<D[i]<<endl;
}
j=0;
for (int i=0;i<N;i+=2) {
E[j]=B[i]+B[i+1];
j++;
}
cout<<"Visualizzo gli elementi di e!\n";
for (int i=0;i<N/2;i++) {
cout<<"Elemento in posizione: "<<i<<" valore: "<<E[i]<<endl;
}
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++;
}
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++
Approfondimento vettori in C++
Esercitazione sugli array in C++
Massimo elemento di un vettore