Bonjour, voila je doit faire un programme qui vérifie si le mot est un palindrome ou non, et qui retourne un booléen.
Voila mon prog, si quelqu'un peut m'aider, merci
#include
#include <string>
using namespace std;
bool palindrome(string);
int main()
{
string mot;
cout<<"Saisir un mot: ";
cin>>mot;
palindrome(mot);
system("pause");
return 0;
}
bool palindrome(string mot)
{
int s,i,longChaine,position;
string extrait,extrait2;
longChaine=mot.length();
for (i=0;i<=longChaine;i++)
{
extrait=mot.substr(i,1);
}
for (s>=0; s=longChaine; s--)
{
extrait2=mot.substr(s,1);
@ed75:
1) C'est du C, pas du C++. Non pas que l'on ne puisse pas mettre du C dans du C++, mais c'est particulièrement inélégant.
2) C'est super pas optimisé ! Tu fais une copie de chaîne, que tu retournes, et enfin tu compares, alors qu'il suffit juste de comparer les caractères un à un. De plus, où est la libération de la chaîne dupliquée ?
3) On lui a donné un exercice, dont le but est de lui faire travailler les boucles et les chaînes de caractères. Avec la solution que tu lui donnes, il ne travail rien du tout. Une simple utilisation de fonction ne saurait remplacer la pratique d'utilisation des boucles.
4) Enfin, d'un point de vue général, donner la solution d'un exercice à un étudiant est particulièrement anti-pédagogique. Mieux vaut lui expliquer l'erreur et l'aider à trouver de lui même.
Pour vérifier si une chaîne est un palindrome, pas besoin de recopier la chaîne à l'envers... Il suffit de vérifier si le caractère en cours et son opposé sont identiques ou non.
Pour chaque caractère si
s[i] == s[taille - 1 - i]
alors
s est un palindrome.
Ok merci beaucoup et en C++ ça donne quoi? Je n'ai encore pas vu ce type d'écriture algo. J'ai le droit d'utiliser que 2 fonctions qui sont longueur et extrait.