Come inserire un vettore dentro un altro vettore nel linguaggio C

Questo programma inserisce un vettore v2 in una posizione interna dell'array v spostando tutti gli elementi di v2 verso destra. Gli elementi eccedenti sono eliminati.

  1. #include <stdio.h>>
  2. // funzione per inserire il vettore v2 nel vettore v
  3. void inserire(int v[], int d, int p, int v2[], int t) {
  4. int i;
  5. if (p<0 || p>=d) return;
  6. for (i=d-1; i>p+t; i--) {
  7. v[i]=v[i-t];
  8. }
  9. for (i=1; i<=t; i++) {
  10. v[p+i]=v2[i-1];
  11. }
  12. return;
  13. }
  14. // programma principale
  15. int main() {
  16. int i,r,n=99,p=2;
  17. int v[]={1,2,3,4,5,6,7,8,9,10};
  18. int v2[]={30,31,32};
  19. inserire(v,10,2,v2,3);
  20. for (i=0;i<10;i++) {
  21. printf(" %d ",v[i]);
  22. }
  23. return 0;
  24. }

Come funziona

Nella riga 17 del programma principale main() definisco un vettore v[] composto da dieci elementi

int v[]={1,2,3,4,5,6,7,8,9,10};

Nella riga 18 dichiaro e definisco un secondo vettore v2[] composto da tre elementi.

int v2[]={30,31,32};

Nella riga 19 richiamo la funzione inserire()

inserire(v,10,2,v2,3);

passandogli come parametri

  • il vettore stesso v
  • il numero di elementi del vettore (10)
  • la posizione (2) dell'array a partire dalla quale inserire i nuovi elementi
  • il vettore da inserire (v2)
  • il numero degli elementi del vettore (3) da inserire.

Alla riga 3 la funzione inserire() recepisce i in entrata.

void inserire(int v[], int d, int p, int v2[], int t) {

Per comodità utilizzo i nomi v e v2 degli array anche nella funzione.

Le variabili locali della funzione sono:

  • la variabile d riceve il numero di elementi (10) del vettore v
  • la variabile p la posizione (2) in cui inserire il vettore
  • la variabile t il numero di elementi (3) del vettore v2.

Nella riga 5 verifico se la posizione indicata è minore di zero o maggiore del numero di elementi del vettore.

Se così fosse, la funzione inserire() restituisce il controllo alla funzione chiamante main().

if (p<0 || p>=d) return;

Nelle righe 6-8 sposto di t (=3) posizioni in avanti tutti i valori del vettore v fino alla posizione p (=2) in cui dovrò inserire il vettore v2.

for (i=d-1; i>p+t; i--) {
v[i]=v[i-t];
}

Dopo questa operazione il vettore v ha i seguenti elementi

1 2 3 4 5 6 4 5 6 7

Gli elementi di valore 8, 9, 10 sono stati sovrascritti, mentre gli elementi di valore 4, 5, 6, 7 (verde) sono stati spostati di tre posizioni in avanti nel vettore v.

Nella riga 9-11 scrivo i t=3 valori del vettore v2 dopo la posizione p=2 dell'array v.

for (i=1; i<=t; i++) {
v[p+i]=v2[i-1];
}

Poi restituisco il controllo al programma main.

Essendo una funzione void è comunque facoltativo indicare l'istruzione return alla fine. La scrivo solo per semplificare la spiegazione.

return;

L'output del programma è il seguente

1 2 3 30 31 32 4 5 6 7

Il programma ha inserito dopo la posizione p=2 i tre (t=3) elementi 30, 31, 32 del vettore v2.

Da notare che la posizione p=2 è la terza posizione nell'array perché la prima posizione di un vettore ha indice zero.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

Il linguaggio C

  1. Un esempio pratico
  2. Come compilare il programma

Impariamo a programmare

  1. Come dichiarare le variabili
  2. Gli operatori
  3. La libreria stdio.h
  4. Come visualizzare in output testo e variabili
  5. Come usare le stringhe
  6. L'istruzione IF
  7. Le strutture cicliche
  8. Le funzioni
  9. Gli array