Esercizio sui vettori in C++

Esercizio sui vettori in C++

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++

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++

Ricerca in un array ordinato

Array con numeri random

Ricerca binaria