Inverser un tableau en c

J’ai vérifié certaines vidéos de l’inversion d’un tableau en C, donc je sais que ma logique est correcte. Voici mon code:

#include  void reverse( int arr[], unsigned int len ) { int i=0; int n=len; int j=len-1; int temp; while (i<n) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; i++; j--; } } void reverse( int arr[], unsigned int len ); int main( void ) { int a[] = {11, 19, 13}; unsigned int len = 3; reverse( a, len ); int k=0; for( k=0; k<len; k++ ) { printf( "%d ", a[k] ); } printf( "\n" ); return 0; } 

Il sort le même tableau. Je ne pouvais pas trouver où était le problème. Devrais-je retourner quelque chose pour la fonction reverse ?

Vous inversez le tableau deux fois; c’est pourquoi vous avez le tableau d’origine.

Comment? Prenons pour exemple un tableau de 10 éléments. Dans un premier temps, vous échangerez les 0ème et 9ème éléments. Comme dernière étape, vous échangerez les 9ème et 0ème éléments. Résultat net: pas de changement.

Vous ne voulez pas courir jusqu’à n . Vous voulez exécuter i jusqu’à j , pour ne jamais échanger d’éléments (c.-à-d. Changer la condition en tant while (i < j) { ... } )

Vous inversez votre tableau deux fois, donc une fois que vous l’avez inversé, vous l’inversez à nouveau pour qu’il soit identique à l’original.

Pour arrêter l’inversion, n’exécutez pas la boucle jusqu’à n , exécutez-la jusqu’à ce que j .

En dehors de cela, pour éviter les problèmes de programmation, essayez d’éviter manuellement l’argument. vous avez utilisé dans votre code, len, i, j, n à vos côtés.

  #include  void reverse( int arr[],int i,int j ); void reverse( int arr[], int i,int j ) { int temp; while (i