Apprendre à programmer

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


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.


Autres articles

Guide : Liste de Tableaux C# vs...
En C#, une liste de Tableaux C# et une liste...
Read more
Guide : Liste de Tableaux en C#
En C#, une liste de tableaux est une structure où...
Read more
Guide : Python - Concatenation de chaînes...
La concaténation de chaînes de caractères en Python consiste à...
Read more
Utilisation des Pointeurs en C dans des...
Les pointeurs en C sont un outil puissant pour écrire...
Read more
Série d’Exercices Corrigés : Manipulation de Tableaux...
Cette série d'exercices se concentre sur la manipulation de tableaux...
Read more
Exercices de Programmation Corrigés sur le Microprocesseur...
Le microprocesseur Motorola 6809 est un processeur 8 bits très...
Read more
AZ

Share
Published by
AZ

Recent Posts

GAMME DE MAINTENANCE PRÉVENTIVE – Modèle Excel Complet et PPT

La gamme de maintenance désigne une liste structurée et planifiée d’actions préventives à réaliser sur…

4 heures ago

🛠️ Fiche de Suivi de Maintenance Machine : Modèle Excel + Version Imprimable PowerPoint

La maintenance des équipements est un pilier de la performance industrielle. Que vous gériez un…

6 heures ago

📊Modèle de planning de production Excel Gratuit

Vous avez du mal à suivre votre chaîne de production ?Vous jonglez entre les délais,…

8 heures ago

Les cas particuliers des pronoms relatifs en français

Les pronoms relatifs sont des outils grammaticaux essentiels pour relier deux propositions et éviter les…

15 heures ago

Présenter un rapport de KPI marketing PPT : donner du sens aux données

Le rapport de KPI marketing ne se limite pas à une compilation de chiffres. Il…

1 jour ago

Le passé composé : les cas particuliers à connaître + Fiche Mémento

Le passé composé est l’un des temps les plus utilisés en français. Il permet d’exprimer…

1 jour ago