Apprendre à programmer

Inverser les Éléments d’un Tableau en Langage C

×

Recommandés


Inverser les éléments d’un tableau est une opération courante en informatique, notamment en programmation. En langage C, cette tâche peut être réalisée de manière efficace en utilisant des boucles et des opérations sur les indices du tableau. Dans cet article, nous allons explorer plusieurs approches pour inverser les éléments d’un tableau en C, en expliquant chaque étape en détail.

Approche Utilisant des Indices

L’approche la plus directe pour inverser les éléments d’un tableau en C consiste à utiliser deux indices : un pour parcourir le tableau du début à la fin, et l’autre pour parcourir le tableau de la fin au début. Voici comment cette approche peut être implémentée :

#include <stdio.h>

// Fonction pour inverser les éléments d'un tableau
void inverserTableau(int tableau[], int taille) {
    int debut = 0; // Indice du début du tableau
    int fin = taille - 1; // Indice de fin du tableau

    // Parcourir le tableau jusqu'à ce que les indices se croisent
    while (debut < fin) {
        // Échanger les éléments aux indices debut et fin
        int temp = tableau[debut];
        tableau[debut] = tableau[fin];
        tableau[fin] = temp;

        // Déplacer les indices vers le milieu du tableau
        debut++;
        fin--;
    }
}

int main() {
    int tableau[] = {1, 2, 3, 4, 5};
    int taille = sizeof(tableau) / sizeof(tableau[0]);

    printf("Tableau original : ");
    for (int i = 0; i < taille; i++) {
        printf("%d ", tableau[i]);
    }
    printf("\n");

    // Inverser les éléments du tableau
    inverserTableau(tableau, taille);

    printf("Tableau inversé : ");
    for (int i = 0; i < taille; i++) {
        printf("%d ", tableau[i]);
    }
    printf("\n");

    return 0;
}

Cette approche utilise une boucle while pour parcourir le tableau et échanger les éléments aux extrémités du tableau jusqu’à ce que les indices de début et de fin se croisent. Ensuite, les indices sont déplacés vers le milieu du tableau à chaque itération.

Voici quelques exemples pratiques d’utilisation de la fonction d’inversion de tableau en C :

1. Inversion d’un Tableau de Caractères

Supposons que vous ayez un tableau de caractères représentant une chaîne de caractères et que vous souhaitiez inverser l’ordre des caractères dans cette chaîne. Vous pouvez utiliser la fonction d’inversion de tableau pour accomplir cela. Voici un exemple :

#include <stdio.h>
#include <string.h>

void inverserChaine(char chaine[]) {
    int debut = 0;
    int fin = strlen(chaine) - 1;

    while (debut < fin) {
        char temp = chaine[debut];
        chaine[debut] = chaine[fin];
        chaine[fin] = temp;

        debut++;
        fin--;
    }
}

int main() {
    char chaine[] = "Bonjour";

    printf("Chaine originale : %s\n", chaine);

    inverserChaine(chaine);

    printf("Chaine inversée : %s\n", chaine);

    return 0;
}
2. Inversion d’un Tableau d’Entiers pour une Analyse Palindromique

Voici une décomposition en deux phrases :

  1. Pour vérifier si un tableau d’entiers est palindromique, vous pouvez comparer ses éléments situés aux extrémités opposées et les déplacer vers le centre jusqu’à ce qu’ils se rencontrent.
  2. Si tous les éléments correspondants sont égaux pendant cette comparaison, alors le tableau est palindromique ; sinon, il ne l’est pas.

Vous pouvez inverser le tableau et comparer les éléments originaux avec les éléments inversés pour effectuer cette vérification. Voici un exemple :

#include <stdio.h>

int estPalindromique(int tableau[], int taille) {
    int debut = 0;
    int fin = taille - 1;

    while (debut < fin) {
        if (tableau[debut] != tableau[fin]) {
            return 0; // Non palindromique
        }

        debut++;
        fin--;
    }

    return 1; // Palindromique
}

int main() {
    int tableau[] = {1, 2, 3, 4, 3, 2, 1};
    int taille = sizeof(tableau) / sizeof(tableau[0]);

    if (estPalindromique(tableau, taille)) {
        printf("Le tableau est palindromique.\n");
    } else {
        printf("Le tableau n'est pas palindromique.\n");
    }

    return 0;
}
3. Inversion d’un Tableau pour un Traitement Inverse

Parfois, vous pourriez avoir besoin d’inverser un tableau pour un traitement ultérieur. Par exemple, vous pouvez avoir une liste de valeurs stockées dans un tableau et vous souhaitez les traiter dans l’ordre inverse. Voici un exemple simple :

#include <stdio.h>

void traiterTableauInverse(int tableau[], int taille) {
    for (int i = taille - 1; i >= 0; i--) {
        // Traiter chaque élément dans l'ordre inverse
        printf("%d ", tableau[i]);
    }
    printf("\n");
}

int main() {
    int tableau[] = {5, 4, 3, 2, 1};
    int taille = sizeof(tableau) / sizeof(tableau[0]);

    printf("Tableau original : ");
    for (int i = 0; i < taille; i++) {
        printf("%d ", tableau[i]);
    }
    printf("\n");

    printf("Traitement en ordre inverse : ");
    traiterTableauInverse(tableau, taille);

    return 0;
}

Ces exemples démontrent comment l’inversion de tableau en C peut être utilisée dans divers scénarios pratiques pour manipuler des données dans des applications réelles.

Cas particuliers

Voici quelques cas particuliers avec du code démontrant des scénarios spécifiques d’utilisation de l’inversion de tableau en C :

1. Inversion d’un Tableau Vide

Si vous avez un tableau vide, l’inversion n’aura aucun effet car il n’y a pas d’éléments à inverser. Voici un exemple :

#include <stdio.h>

void inverserTableau(int tableau[], int taille) {
    // L'inversion d'un tableau vide n'a aucun effet
}

int main() {
    int tableau[] = {};
    int taille = 0;

    printf("Tableau original : \n");
    printf("Tableau inversé : \n");

    return 0;
}

Dans cet exemple, le tableau est vide, donc aucune inversion n’est effectuée.

2. Inversion d’un Tableau avec un Seul Élément

Si vous avez un tableau avec un seul élément, l’inversion n’aura aucun effet car il n’y a pas d’autres éléments avec lesquels échanger. Voici un exemple :

#include <stdio.h>

void inverserTableau(int tableau[], int taille) {
    // L'inversion d'un tableau avec un seul élément n'a aucun effet
}

int main() {
    int tableau[] = {42};
    int taille = 1;

    printf("Tableau original : %d\n", tableau[0]);
    printf("Tableau inversé : %d\n", tableau[0]);

    return 0;
}

Dans cet exemple, le tableau a un seul élément, donc aucune inversion n’est effectuée.

3. Inversion d’un Tableau avec un Nombre Impair d’Éléments

Lorsque vous avez un tableau avec un nombre impair d’éléments, l’élément du milieu reste inchangé car il n’y a pas d’autre élément avec lequel l’échanger. Voici un exemple :

#include <stdio.h>

void inverserTableau(int tableau[], int taille) {
    int debut = 0;
    int fin = taille - 1;

    while (debut < fin) {
        int temp = tableau[debut];
        tableau[debut] = tableau[fin];
        tableau[fin] = temp;

        debut++;
        fin--;
    }
}

int main() {
    int tableau[] = {1, 2, 3, 4, 5};
    int taille = 5;

    printf("Tableau original : ");
    for (int i = 0; i < taille; i++) {
        printf("%d ", tableau[i]);
    }
    printf("\n");

    inverserTableau(tableau, taille);

    printf("Tableau inversé : ");
    for (int i = 0; i < taille; i++) {
        printf("%d ", tableau[i]);
    }
    printf("\n");

    return 0;
}

Dans cet exemple, le tableau original contient un nombre impair d’éléments, et l’élément du milieu (3 dans cet exemple) reste inchangé après l’inversion.


Recommandés

AZ

Share
Published by
AZ

Recent Posts

Outils interactifs : Cartographie des processus et grille d’audit interne ISO 9001

Deux outils concrets pour piloter la qualité sans alourdir vos équipes Cette page met à…

22 heures ago

Exemple de fiche de préparation de chantier

Un chantier se gagne souvent avant même l’arrivée des équipes. Quand tout est clair dès…

2 jours ago

Texte argumentatif sur le mariage forcé

Le mariage a du sens quand il repose sur une décision libre, mûrie et partagée.…

2 jours ago

Étude de cas en droit : Modèle Word à suivre

Une étude de cas réussie commence par une structure sûre. Ce modèle Word vous guide…

5 jours ago

Soft skills : la liste A à Z interactive pour trier, comparer et choisir vos compétences clés

Les soft skills se repèrent vite sur une fiche, mais elles ne pèsent vraiment que…

5 jours ago

Comparateur de verres progressifs

Outil de comparaison et repérage des offres étudiantes Choisir des verres progressifs ressemble rarement à…

6 jours ago

This website uses cookies.