Come estrarre gli elementi di un vettore nel linguaggio C
In questo programma estraggo una sequenza di n elementi da un vettore a partire da una posizione interna dell'array v. Gli elementi sono copiati in un nuovo vettore v2.
- #include <stdio.h>>
- // funzione per estrarre gli elementi dal vettore
- void estrai(int v[], int v2[], int p, int n) {
- int i;
- if (p<0 || n<=0) return;
- for (i=0; i<n; i++) {
- v2[i]=v[p+i];
- }
- }
- // programma principale
- int main() {
- int i;
- int v[]={1,2,3,4,5,6,7,8,9,10};
- int v2[10];
- int p=2, n=3;
- estrai(v,v2,p,n);
- for (i=0;i<n;i++) {
- printf(" %d ",v2[i]);
- }
- return 0;
- }
Come funziona
Nella riga 13 del programma principale main() definisco un vettore v[].
E' composto da dieci elementi
int v[]={1,2,3,4,5,6,7,8,9,10};
Nella riga 14 dichiaro e definisco un secondo vettore v2[] vuoto con una dimensione massima di 10 elementi interi.
int v2[10];
Nella riga 15 dichiaro le variabili p e n.
La variabile p è la posizione iniziale da cui copiare gli elementi (p=2) nel vettore v, mentre la variabile n è il numero di elementi da copiare (
int p=2, n=3;
Nella riga 16 richiamo la funzione estrai()
estrai(v,v2,p,n);
passandogli come parametri
- il vettore v da cui copiare
- il vettore v2 in cui scrivere gli elementi estratti da v
- la posizione (p=2) dell'array a partire dalla quale estrarre i nuovi elementi
- il numero degli elementi (n=3) da estrarre dal vettore
Alla riga 3 la funzione inserire() recepisce i in entrata.
E' una funzione void in quanto i vettori non sono variabili locali e sono modificati direttamente dalla funzione.
void estrai(int v[], int v2[], int p, int n) {
Per comodità utilizzo gli stessi nomi v e v2 degli array e delle variabili locali p, n anche nella funzione.
Le variabili locali della funzione sono:
- la variabile p è la posizione (2) a partire dalla quale estrarre gli elementi dal vettore v.
- la variabile n è il numero di elementi (3) da estrarre dal vettore v.
Nella riga 5 verifico se la posizione iniziale e il numero di elementi da estrarre sono valori negativi.
Se così fosse, la funzione estrai() restituisce il controllo alla funzione chiamante main() senza fare nulla.
if (p<0 || n<=0) return;
Nelle righe 6-8 scrivo nel vettore v2 gli n=3 elementi del vettore v a partire dalla posizione p=2.
for (i=0; i<n; i++) {
v2[i]=v[p+i];
}
Dopo questa operazione il vettore v2 ha i seguenti elementi
3 4 5
Il programma ha estratto tre elementi dal vettore v a partire dalla posizione due e li ha scritti nel vettore v2.
Nota. La posizione iniziale di estrazione p=2 è la terza posizione nell'array perché la prima posizione di un vettore ha l'indice pari a zero.
E così via.