Come invertire gli elementi di un array in C
Nella seguente pagina viene mostrato come creare un programma nel linguaggio C in grado di invertire l’ordine degli elementi di un array, o vettore.
Innanzitutto abbiamo bisogno di un array contenente dei valori, per questo motivo dichiariamo ed inizializziamo, sulla stessa riga, un array di interi denominato val di dimensione massima MAX, pari a 10.
int val[MAX] = {0, 1, 2, 3, 4, 5 , 6, 7, 8, 9};
Nota: l’array può essere di qualsiasi tipo, non deve essere per forza costituito da valori numerici interi.
Per poter invertire l’ordine degli elementi dell’array creato, abbiamo bisogno di una variabile temporanea che dovrà possedere lo stesso tipo di dato degli elementi contenuti all’interno dell’array, nel nostro caso int temp;.
L’idea di fondo, per invertire l’ordine degli elementi dell’array, è quella di utilizzare un ciclo for per scorrere metà dell’array (cioè MAX / 2) ed ad ogni iterazione scambiare tra di loro i valori esterni, fino a raggiungere il centro dell’array.
In particolare ad ogni iterazione immagazziniamo il valore nella posizione dell’indice i all’interno della variabile temp, mentre immagazziniamo all’interno dell’array nella posizione i il valore che si trova nella posizione MAX - 1 - i e infine immagazziniamo nell’array in posizione MAX - 1 - i il valore contenuto nella variabile temp, ovvero quello che precedentemente si trovava nell’array in posizione i.
Il motivo per cui viene usato MAX - 1 -i è che l'array parte dall’indice 0 quindi dalla dimensione dell’array dobbiamo sottrarre 1, mentre l'indice i ci permette di scorrere all’indietro l’array, infatti ad ogni iterazione i cresce, quindi ci troveremo nella cella i-volte prima rispetto alla fine dell’array.
Al termine del ciclo for, gli elementi dell’array originario saranno invertiti. Per visualizzare meglio l’ordine degli elementi dell’array, nel codice, prima di effettuare l’inversione e anche dopo averla eseguita, stampiamo a schermo tutti gli elementi dell’array.
#include <stdio.h>
#define MAX 10
int main(){
int val[MAX] = {0, 1, 2, 3, 4, 5 , 6, 7, 8, 9};
int temp;
for(int i = 0; i < MAX; i++){
printf("%d ", val[i]);
}
printf("\n\n");
for(int i = 0; i < MAX / 2; i++){
temp = val[i];
val[i] = val[MAX - 1 - i];
val[MAX - 1 - i] = temp;
}
for(int i = 0; i < MAX; i++){
printf("%d ", val[i]);
}
return 0;
}
/* Output:
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
*/
Indice pagine di c
Indice cPagine aggiunte di recente
Indice pagine del linguaggio C: Funzioni, Stringhe, ArrayCome effettuare la radice quadrata con la funzione sqrt in CCome ottenere il valore assoluto con la funzione abs in CCome generare numeri casuali con la funzione rand in CCome generare numeri casuali tra due numeri in C