Aller au contenu

#01 - Le problème du Palindrome

Énoncé

Écrire un programme qui demande à l'utilisateur de saisir une chaîne de caractère et qui lui indique ensuite si la chaîne de caractère est un palindrome ou non.

Rappel: Un palindrome de lettres est une figure de style désignant un mot ou une phrase dont l'ordre des lettres reste le même qu'on les lise de gauche à droite ou de droite à gauche, comme dans la phrase « Ésope reste ici et se repose » ou encore « La mariée ira mal » à un accent près.

Solution

Nous allons écrire une fonction EstPalindrome qui prend en entrée une chaîne de caractères et qui évalue s'il s'agit d'un palindrome ou non.

int EstPalindrome(char *chaine)
{
    int oui=1, n, i;

    n=strlen(chaine);
    i=0;
    while(oui && i<n)
    {
        if(*(chaine+i)!=(*(chaine+n-1-i)))
        {
            oui=0;
        }
        i++;
    }
    return oui;
}

Programme complet

// Bibliothèques
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Constantes
#define MAX 100

// Fonctions
void SaisirChaineDeCaracteres(char *chaine)
{
    printf(">>>");
    scanf("%s", chaine);
}

int EstPalindrome(char *chaine)
{
    int oui=1, n, i;

    n=strlen(chaine);
    i=0;
    while(oui && i<n)
    {
        if(*(chaine+i)!=(*(chaine+n-1-i)))
        {
            oui=0;
        }
        i++;
    }
    return oui;
}

int main()
{
    // Prototypes
    void SaisirChaineDeCaracteres(char *);
    int EstPalindrome(char *);

    char motLu[MAX];

    printf("Entrer une chaîne de caractère\n");
    SaisirChaineDeCaracteres(motLu);

    printf("Test Palindrome: %d\n", EstPalindrome(motLu));

    return 0;
}