Aide : algo palindrome
Fermé
bansan
blursly - 30 oct. 2013 à 18:07
- Messages postés
- 122
- Date d'inscription
- samedi 7 février 2004
- Statut
- Membre
- Dernière intervention
- 8 mai 2011
blursly - 30 oct. 2013 à 18:07
A voir également:
- écrire une fonction palindrome qui teste si une chaîne est un palindrome
- Algorithme palindrome - Meilleures réponses
- Palindrome algorithme - Meilleures réponses
- Aide : algo palindrome - Forum - Programmation
- écrire une fonction palindrome qui teste si une chaîne est un palindrome en c ✓ - Forum - C
- Aide palindrome en C ✓ - Forum - C
- Algorithme-palindrome - Forum - Programmation
- écrire une fonction qui teste si un nombre est premier ou non ✓ - Forum - Astuces et Solutions
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.
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.
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;
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;
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));
}
}
lami20j
13 mars 2008 à 07:33
- Messages postés
- 21331
- Date d'inscription
- jeudi 4 novembre 2004
- Statut
- Modérateur, Contributeur sécurité
- Dernière intervention
- 30 octobre 2019
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
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
13 mars 2008 à 00:07
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