Ciao, come faccio ad invertire un'array di interi?
Ad esempio, ho un vettore che contiene (1,2,3,4) e dopo averlo invertito deve contenere (4,3,2,1)
Sapete darmi una mano?
CIAO!
Ciao, come faccio ad invertire un'array di interi?
Ad esempio, ho un vettore che contiene (1,2,3,4) e dopo averlo invertito deve contenere (4,3,2,1)
Sapete darmi una mano?
CIAO!
Scrivi una funzione alla quale passi l'indirizzo del tuo array. All'interno della funzione, grazie ad una variabile temporanea, scambi i valori dell'array.
Ciao!
Ad esempio:
#include <stdio.h>
void scambia(int *);
int main(){
int a[] = {1, 2, 3, 4};
int *pi, i;
pi = a;
scambia(pi);
for(i = 0; i < 4; ++i){
printf("%d\n", a[i]);
}
}
void scambia(int *p){
int temp;
int i;
for(i = 0; i < 2; ++i){
temp = p[0 + i];
p[i] = p[3 - i];
p[3 - i] = temp;
}
}
N.B: a questo punto lo devi ottimizzare per un vettore di lunghezza arbitraria. Provaci non è difficile.
Ciao!
da quello che ho capito, mi sembra che per invertire un array devo fare un ciclo for...
giusto??
Allora nel mio esercizio ho:
int vettore[]= {1,2,3,4,5} ;
int dim = 5; // il vettore contiene dim elementi !
float risultato;
come faccio a fare un ciclo for che mi inverta l'ordine degli elementi del vettore?
codice:#include <stdio.h> int main() { int vettore[]= {1,2,3,4,5} ; int dim = 5; // il vettore contiene dim elementi ! // copi il vettore su se stesso int i; for (i=0; i < dim / 2; ++i) { int tmp = vettore[i]; vettore[i]=vettore[dim-1-i]; vettore[dim-1-i]=tmp; } for (i=0; i < dim; ++i) printf("%d\n", vettore[i]); return (0); }
Non so se sia lecito farlo (nel senso se l'esercizio lo permette...)
Se dim non è fisso sostituisci l'array fisso con l'allocazione dinamica.codice:#include <stdio.h> int main() { int vettore[]= {1,2,3,4,5}; int contrario[5]; int dim = 5; for (int i = dim,j = 0; i != 0; i--,j++) contrario[j] = vettore[i]; return (0); }
O fai, a modi sceriffo, uno strrev con un cast.
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
Funziona con qualsiasi dimensione; non usa array di appoggio, ne variabili di appoggio.codice:#include <stdio.h> int main(void){ int array[] = {1, 2, 3, 4, 5}; int i, j, m; i = 0; /*Calcola la dimensione*/ j = sizeof(array) / sizeof(int) - 1; /*Calcola il punto medio*/ m = (i + j + 1) / 2; printf("Size: %d\nMiddle: %d\n", j, m); for(i = 0; i < m && j >= m; i++, j--){ /*XOR Swap*/ array[i] ^= array[j]; array[j] ^= array[i]; array[i] ^= array[j]; printf("Exchanged %d with %d\n", array[j], array[i]); } for(i = 0; i < (sizeof(array) / sizeof(int)); i++) printf("%d\t", array[i]); putchar('\n'); return 0; }
facciamogli del male
codice:#include <stdio.h> int main(void){ int array[] = {1, 2, 3, 4, 5, 6, 7}; int i, j; /*Calcola la dimensione*/ j = sizeof(array) / sizeof(int) - 1; for(i = 0; i < j; ++i, --j){ /*XOR Swap*/ array[i] ^= array[j] ^= array[i] ^= array[j]; printf("Exchanged %d with %d\n", array[j], array[i]); } for(i = 0; i < (sizeof(array) / sizeof(int)); i++) printf("%d\t", array[i]); putchar('\n'); return 0; }
All'inizio avevo pensato anchio a quello swap, poi l'ho spezzettato per far un favore a enrico999