Algorithme polyndrome

Fermé
kOUKFIF - 24 janv. 2021 à 22:17
 Utilisateur anonyme - 25 janv. 2021 à 11:37
Bonjour,

je veux ecrire en language pascal l'algorithme qui va me vérifier si le mot ou la chaine saisi au clavier est polyndrome ou non??

alors j'ai tester la fonction proposé ici dans les repense , ca marche mais j'ai pas bien compris..


merci de vos repense

Configuration: Windows / Chrome 87.0.4280.141

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
24 janv. 2021 à 22:53
Bonjour,

SI tu veux que des personnes puissent t'aider à comprendre le code que tu as récupéré ... il faut que tu le montre...

NB: Pour poster du code sur le forum, tu devras utiliser les BALISES DE CODE.
Explications ( à lire ENTIEREMENT !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
voici la fonction dont je parle


function inverse(ch:string; i:integer):string;
begin
if(i<=length(ch))then
inverse:=inverse(ch,i+1)+ch[i];
end;


1- j'ai pas pu comprendre le résonnement
2- est ce que je ne peut pas faire un algo avec une boucle, soit pour soit tantque ?
0
Utilisateur anonyme
25 janv. 2021 à 11:37
Bonjour,
Pour un code plus important (là ça va encore : il n'y a que 5 lignes), penser à bien lire et appliquer les consignes données par Jordane45 : utiliser les BALISES DE CODE.
Explications ( à lire ENTIEREMENT !! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Pour comprendre ce que fait le programme, il faut avoir en tête que un palindrome est un mot ou une phrase qui peut se lire aussi bien de la droite vers la gauche que, de façon habituelle, de la gauche vers la droite : ex. le mot Anna ; larousse.fr cite le mot <ital>ressasser ou la phrase Ésope reste ici et se repose.</ital>

Le programme écrit donc le mot à l'envers en utilisant une propriété appelée la récursivité c'est à dire la possibilité pour une fonction de s'appeler elle-même.
Considérant qu'une chaine textuelle est considérée par Pascal (et d'autres langages) comme un tableau de caractères dont l'indice 1 contient le premier caractère, la fonction inverse réalise l'écriture du mot de la droite vers la gauche.

On pourrait donc en effet utiliser une boucle (for ou autre) pour partir du caractère le plus à droite (length de la chaine) et en remontant jusqu'à 1 l'écrire à l'envers.

Si c'est une palindrome alors chaine = chaine_inverse.

Cordialement
0