Palindrome c++

Signaler
Messages postés
14
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
30 novembre 2011
-
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
-
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);

}


if(extrait==extrait2)
{
cout<<true;
}
else
{
cout<<false;
}
}

6 réponses

Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
@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.
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
Inutile de créer un nouveau sujet:
http://www.cppfrance.com/forum/sujet-FONCTION-INVERSE-CPLUSPLUS_1372065.aspx

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.
Messages postés
293
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
10 avril 2015
2
C'est quoi la question ? ca marche ? ca marche pas ?
et sinon n'oublie pas d'indenter parceque ton code n'est pas trop lisible.

______________________
Adeon, programmeur de jeux sur directX 9 (www.theolith.com) à votre service !
Messages postés
14
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
30 novembre 2011

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.
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
Je t'ai donné la méthode, à toi de le faire en C++ :)
Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
Bonjour,

Ca tient en une seule ligne :

int is_palindrome = !strcmp(mot,strrev(strdup(mot)));