Come invertire un vettore in C
Questo programma inverte la posizione degli elementi in un array con il linguaggio C.
- #include <stdio.h>
- // funzione per invertire l'ordine degli elementi
- void inverti(int v[], int s) {
- int i,k,x;
- if (s==1) return;
- for(i=0, k=s-1; i<s/2; i++, k--) {
- x=v[i];
- v[i]=v[k];
- v[k]=x;
- }
- }
- // programma principale
- int main()
- {
- int v[]={1,2,3,4,5,6,7,8,9};
- int i;
- inverti(v,9);
- for (i=0;i<9;i++) {
- printf(" %d ",v[i]);
- }
- return 0;
- }
Come funziona
Nella riga 15 del programma definisco un vettore numerico v[] con nove elementi.
int v[]={1,2,3,4,5,6,7,8,9};
Nella riga 17 chiamo la funzione inverti() passandogli come argomenti il vettore v[] e il numero di elementi del vettore.
La funzione inverti() sostituisce il primo elemento con l'ultimo, il secondo con il penultimo, e via dicendo.
inverti(v,9);
Infine, nelle righe 18-20 della funzione main() stampo gli elementi del vettore v[] dopo la modifica.
Il risultato in output è
9 8 7 6 5 4 3 2 1
L'ordine degli elementi nel vettore è stato invertito.
Nota. Lo script non esegue alcun ordinamento, si limita a sostituire la posizione degli elementi nell'indice del vettore.
E così via.