Aller au contenu principal
U/
Mémoire
c

Inverser un tableau d'int en place

Implémenter la fonction void inverser(int *t, size_t n) qui renverse un tableau d'entiers en place en utilisant deux indices convergents, sans tableau auxiliaire.

25 minPublié le 20 mai 2026Proposé par Anonyme

Défi

// Lisez attentivement, codez sur votre machine

Énoncé

Écrire la fonction void inverser(int *t, size_t n) qui inverse sur place le tableau pointé par t de longueur n. L'algorithme utilise deux indices i = 0 et j = n - 1 qui convergent vers le centre : à chaque étape on échange t[i] et t[j] à l'aide d'une variable temporaire, puis on incrémente i et décrémente j. La fonction est ensuite démontrée dans main sur un tableau de cinq entiers dont les valeurs avant et après inversion sont affichées.

Contraintes

  • Compilé avec gcc -Wall -Wextra -std=c99 -o inv inv.c.
  • Aucun tableau auxiliaire ni appel à malloc : l'inversion se fait en place.
  • La fonction doit traiter le cas n == 0 ou n == 1 sans comportement indéfini.
  • Utiliser size_t pour les indices afin d'éviter les avertissements de comparaison signée/non signée.
  • Seule <stdio.h> est nécessaire (plus <stddef.h> pour size_t si besoin).

Exemple

Programme de démonstration :

int main(void) {
    int t[] = {1, 2, 3, 4, 5};
    size_t n = 5;
    printf("Avant : ");
    for (size_t i = 0; i < n; i++) printf("%d ", t[i]);
    printf("\n");
    inverser(t, n);
    printf("Apres : ");
    for (size_t i = 0; i < n; i++) printf("%d ", t[i]);
    printf("\n");
    return 0;
}

Sortie attendue :

Avant : 1 2 3 4 5 
Apres : 5 4 3 2 1 
Espace solution

Proposer une solution

Connectez-vous ou créez un compte pour envoyer votre code (aucune exécution côté serveur — on stocke juste le texte pour la communauté).

// À garder en tête
  • D'abord, faire marcher

    On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)

  • Pas de mauvaise réponse

    Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.

  • Trop dur ? Au suivant

    Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.