0
votes

Quelqu'un peut-il vérifier si ce code Palindrome C ++ est correct?

Voici un programme que j'ai construit pour vérifier les mots Palindrome en C ++. Cela ne fonctionne pas de manière habituelle (pour inverser le mot et vérifier s'il est identique), mais il vérifie directement chaque mot du début et de la fin;

Madame, Ada, Hannah, Racecar sont les mots que j'ai essayés et ils semblent être corrects. xxx

Les résultats sont corrects, je n'ai pas pu trouver de code Comme ça, alors je voulais juste vérifier.


7 commentaires

Vous voudrez peut-être poster ceci à codereview.stackexchange.com à la place.


Je pense que vous devriez iTERE PAS sur tous les personnages, mais seulement plus de la moitié d'entre eux, c'est-à-dire pour (int i = 0; i <= index / 2; i ++) . Au lieu de compter les caractères égaux, vous pourriez quitter (FALSE) dès que n'importe quelle paire n'est pas égale.


De plus, vous pouvez vérifier si si (texte [i]! = Texte [index-i]) renvoie false; et se débarrasser de x .


Je ne retournerais pas un std :: chaîne mais plutôt un bool , il est beaucoup plus facile de convertir un bool à chaîne En cas de besoin que de convertir "vrai" / "false" à un bool au cas où vous en auriez besoin.


@Mansoor avait la même idée, mais le type de retour est chaîne


Appartient à codereview.stackexchange.com


Bienvenue dans le débordement de la pile! Si vous croyez que le code fonctionne correctement, envisagez de présenter votre travail (avec ses tests d'unités) de manière plus complète sur avis de code . Vous aurez probablement des suggestions sur la rendant plus efficace, plus facile à lire et mieux testé. Avant de le faire, assurez-vous de lire Guide de la revue de codes pour les utilisateurs de pile de dépassement d'abord, car certaines choses se font différemment. là-bas - par exemple Les titres de question devraient simplement dire ce que le code fait , comme la question est toujours: «Comment puis-je améliorer cela?».


4 Réponses :


3
votes

Votre fonction est trop compliquée. Le paramètre doit être un type référencé constant, et la fonction doit renvoyer une valeur booléenne.

ci-dessous Il existe un programme de démonstration qui montre comment la fonction peut regarder à l'aide d'une boucle. P>

true
false


0 commentaires

0
votes

Étant donné qu'un palindrome est une chaîne qui est la même lorsque vous inversez, vous pouvez utiliser std :: égal et un itérateur inversé comme celui-ci xxx

sortie: < / p> xxx

Cette approche évite de créer une chaîne temporaire en marche arrière pour la comparaison.

Vous pouvez également implémenter une boucle avec deux index, une pour la gauche et pour la droite, incrémentation de la gauche et décrémentant la droite: xxx


0 commentaires

0
votes

Oui, votre logique est correcte et donnera les bons résultats.


0 commentaires

0
votes

Je suis d'accord avec les gens que cela a quelque chose pour examen de code, mais votre code a l'air correct. ... et pourquoi ne pas jeter plus de versions Palindrome plus? Voici un fonctionnement avec des itérateurs afin que vous puissiez vérifier les gammes de tout type avec un opérateur d'égalité: xxx

et une doublure one-liner: xxx


0 commentaires