Come inserire un elemento in un vettore in C
Questo programma inserisce un nuovo elemento in una posizione interna dell'array spostando tutti gli altri. L'ultimo elemento del vettore viene rimosso.
- #include <stdio.h>>
- // funzione per inserire un elemento nel vettore
- inserire(int v[], int d, int p, int n) {
- int i,r;
- if (p<0 || p>=d) return -1;
- r=v[d-1];
- for (i=d-1; i>p; i--) {
- v[i]=v[i-1];
- }
- v[p]=n;
- return r;
- }
- // programma principale
- int main() {
- int i,r,n=99,p=2;
- int v[]={1,2,3,4,5,6,7,8,9,10};
- r = inserire(v,10,p,n);
- printf("valore immesso %d \n", n);
- printf("valore rimosso %d \n", r);
- for (i=0;i<10;i++) {
- printf(" %d ",v[i]);
- }
- return 0;
- }
Come funziona
Nella riga 16 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 17 richiamo la funzione inserire() passandogli come parametro il vettore stesso v[], il numero di elementi del vettore (10), il nuovo elemento (n) e la posizione (p) dell'array in cui inserire il nuovo elemento.
r = inserire(v,10,p,n);
La funzione inserire() recepisce i quattro parametri in entrata.
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() con un codice di errore -1.
if (p<0 || p>=d) return -1;
Nella riga 6 assegno alla variabile r il valore dell'ultimo elemento dell'array che viene rimosso dopo l'inserimento del nuovo elemento.
r=v[d-1];
Nelle righe 7-9 sposto di una posizione in avanti i valori del vettore fino alla posizione p in cui dovrò inserire il nuovo elemento.
for (i=d-1; i>p; i--) {
v[i]=v[i-1];
}
Nella riga 10 assegno il nuovo valore n alla posizione p dell'array.
v[p]=n;
Poi restituisco il controllo al programma main insieme al valore dell'elemento rimosso
return n
L'output del programma è il seguente
valore immesso 99
valore rimosso 10
1 2 99 3 4 5 6 7 8 9
Il programma ha inserito nella posizione p=2 il nuovo elemento n=99.
Da notare che la posizione p=2 è la terza nell'array perché la prima posizione del vettore ha indice zero.
L'ultimo elemento del vettore (10) è uscito dall'array.
E così via.