Bonjour Chris54,
Tu peux commencer par normaliser la phrase en la mettant en minuscules, puis retirer les espaces et remplacer les caractères accentués. Ensuite, il suffit de comparer le texte obtenu avec sa version inversée.
fonction nettoyerTexte(phrase)
texteNettoye est un texte
texteNettoye vaut phrase
@ Suppression des espaces
texteNettoye vaut remplacer(texteNettoye, " ", "")
@ Remplacement des majuscules accentuées
texteNettoye vaut remplacer(texteNettoye, "É", "E")
texteNettoye vaut remplacer(texteNettoye, "È", "E")
texteNettoye vaut remplacer(texteNettoye, "Ê", "E")
texteNettoye vaut remplacer(texteNettoye, "À", "A")
texteNettoye vaut remplacer(texteNettoye, "Â", "A")
texteNettoye vaut remplacer(texteNettoye, "Î", "I")
texteNettoye vaut remplacer(texteNettoye, "Ï", "I")
texteNettoye vaut remplacer(texteNettoye, "Ô", "O")
texteNettoye vaut remplacer(texteNettoye, "Ù", "U")
texteNettoye vaut remplacer(texteNettoye, "Û", "U")
texteNettoye vaut remplacer(texteNettoye, "Ç", "C")
@ Passage en minuscules
texteNettoye vaut minuscules(texteNettoye)
@ Remplacement des minuscules accentuées
texteNettoye vaut remplacer(texteNettoye, "é", "e")
texteNettoye vaut remplacer(texteNettoye, "è", "e")
texteNettoye vaut remplacer(texteNettoye, "ê", "e")
texteNettoye vaut remplacer(texteNettoye, "à", "a")
texteNettoye vaut remplacer(texteNettoye, "â", "a")
texteNettoye vaut remplacer(texteNettoye, "î", "i")
texteNettoye vaut remplacer(texteNettoye, "ï", "i")
texteNettoye vaut remplacer(texteNettoye, "ô", "o")
texteNettoye vaut remplacer(texteNettoye, "ù", "u")
texteNettoye vaut remplacer(texteNettoye, "û", "u")
texteNettoye vaut remplacer(texteNettoye, "ç", "c")
retourne texteNettoye
fin fonction
fonction estPalindrome(phrase)
texteNormalise est un texte
texteNormalise vaut nettoyerTexte(phrase)
retourne texteNormalise = inverser(texteNormalise)
fin fonction
@ Programme principal
phraseSaisie est un texte
phraseNettoyee est un texte
demande "Entre une phrase : " dans phraseSaisie
phraseNettoyee vaut nettoyerTexte(phraseSaisie)
affiche "Texte analysé : " + phraseNettoyee
affiche "Texte inversé : " + inverser(phraseNettoyee)
si estPalindrome(phraseSaisie) alors
affiche "Cette phrase est un palindrome."
sinon
affiche "Cette phrase n'est pas un palindrome."
fin siLa fonction nettoyerTexte() prépare la phrase pour la comparaison.
Par exemple :
"Ésope reste ici et se repose" -> devient -> "esoperesteicietserepose"
le résultat devient :
Texte analysé : esoperesteicietserepose
Texte inversé : esoperesteicietserepose
Cette phrase est un palindrome.
La fonction estPalindrome() compare ensuite cette version nettoyée avec le même texte écrit à l’envers.
Cette organisation permet de réutiliser facilement la vérification avec plusieurs phrases, sans répéter toutes les opérations de nettoyage.