Aide : algo palindrome

Fermé
bansan
Messages postés
122
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
8 mai 2011
- 12 mars 2008 à 19:22
 blursly - 30 oct. 2013 à 18:07
Bonjour,
j'aimerais bien avoir une petite aide pour cet exo:

Exercice 12 - Chains palindromes
Ecrire un algorithme dont le role est de permettre a l'utilisateur de saisir une chaine de caractéres, puis d'indiquer si la chaine de caractéres saisie est une chaine palindrome (pouvant etre lu dans les deux sens).

Il existe au moins deux methodes pour repondre a ce probleme. donc deux algorithmes sont attendus pour cette question.

Exemples de chaines palindromes : "LAVAL", "non"


Voila ce que j'ai fait:

Afficher ("Saisir une chaine")
Saisir(une chaine)
l<-- LONGUEUR(chaine)

Pour i de 1 à l
a<--sschaine (chaine ,l,1)
....
A voir également:

4 réponses

Bonsoir Bansan,

ne sachant dans quel langage tu programmes je te fais la version algorithmique.


Première méthode :

tu saisis la chaine de caractère dans la variable C1.
tu créais une nouvelle chaine de caractères C2 de même taille, dans laquelle tu copies le premier caractère de C1 en dernière position de C2, le second de C1 dans l'avant dernier de C2 ... jusqu'à la fin.
Ensuite la réponse est donc : C1 == C2 car si les chaines sont identiques c'est un palindrome cqfd.



Deuxième méthode (récursive) :
si C est de taille 1 caractère ou 0 caractère alors c'est un palindrome.
si C de taille >= 2, c'est un palindrome si ces 2 conditions sont réunies ensemble :
1. C(first) == C(last) (premier et dernier caractère de la chaine)
2. et que C(first + 1, last -1) est lui même un palindrome (toute la chaine sauf le premier et le dernier).
cqfd.


Bonne chance.
Greg.
1
bansan
Messages postés
122
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
8 mai 2011

13 mars 2008 à 00:07
Bonsoir et merci pour la reponse

J'utilise un pseudo langage pour faire l'algo
Et a priori dans les 2 methodes que tu donnes.., je ne vois pas trop comment le retranscrire en commande pseudo langage..
Je vais m'y mettre demain matin
Merci
-1
Slt je suis hichem je suis étudiant en premiere année Math Info.
bah j'ai pensé à une réponse mais je c pas si c'est juste:
on sait q'un palindrom c'est un mot qui se lit de droite à gauche et de gauche à droite;
alors il sufit de comparer le premiere caractere avec le dernier le second avec l'avant dernier et ansi de suite;
Voici ma réponse en language algorithmique

fonction PALINDROME (E/i:entier,t:tableau de carateres):booleen;
var j,k:entier;
b:booleen;

debut
j:=0; k:=0; b:=vrai;
tant que (j+1<=i-k)et(b=vrai)
faire
si (t[j+1]=t[i-k])
alors b:=vrai;
sinon b:=faux;
sinsi;
fait;
PALINDROME:=b;
fin;
1
Solution en C# !!!

public static class Palindrome
{
public static bool isPalindrome(this string str)
{
int posx;
int lim;

for (posx = 0, lim = str.Length - 1; posx < lim; ++posx, --lim)
if (str[posx] != str[lim])
return false;
return true;
}

public static bool isPalindromeRec(this string str)
{
int posx;
int lim;

posx = 0;
lim = str.Length - 1;
if (posx >= lim)
return true;
if (str[posx] != str[lim])
return false;
return isPalindromeRec(str.Substring(++posx, --lim));
}
}
0
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 565
13 mars 2008 à 07:33
Salut,

voici un exemple en C sans utiliser une 2ème chaîne
http://www.commentcamarche.net/forum/affich 4486563 probleme c#2

L'algo est simple

2 indices sont utiliser : i commence à 0 (début de la chaîne) et j commence à taille-1 (fin de la chaîne)
i sera incrementé et j sera decrementé jusqu'à quand i devient plus grand que j
si les caractères comparés sont égales alors la châine est un palindrom.
dès qu'une inegalité est trouvée nous sortons de la boucle => la chaîne n'est pas un palindrome

-1