Correction d'un algo

theniet - 28 juil. 2017 à 13:17 - Dernière réponse : Dalfab 294 Messages postés dimanche 7 février 2016Date d'inscription 7 décembre 2017 Dernière intervention
- 28 juil. 2017 à 14:51
Bonjour, est ce que cet algo-palindrome est juste?
algo mot_palindrome

variables n,x,y : entier
mot : chaine

debut
ecrire("entrer un mot : ")
lire(mot)
n:=len(mot) //longueur de mot
x:=0
y:=1
pour i=1 à n/2
si milieu(mot,i,1)=milieu(mot,n-i+1,1) alors
x:=1
sinon
y:=0
finsi
finpour

si y:=0 alors
ecrire("Bravo! ce mot est un palindrome")
sinon
ecrire("Désolé, ce mot n'est pas un palindrome")
finsi
fin




Afficher la suite 

2 réponses

Répondre au sujet
Unombre 41 Messages postés lundi 11 juillet 2016Date d'inscription 8 septembre 2017 Dernière intervention - 28 juil. 2017 à 13:52
0
Utile
Hello,

Il m'a l'air correct.
Juste tu ne te sers pas de ton "x" ?
Tu peux aussi mettre la vérification de ton palindrome dans ta boucle for pour arrêter dès que le mot détecte qu'il ne l'ai pas, et éviter des boucles inutiles
(A quoi correspond exactement la fonction milieu ? surtout le 3eme argument ? )
Commenter la réponse de Unombre
Dalfab 294 Messages postés dimanche 7 février 2016Date d'inscription 7 décembre 2017 Dernière intervention - 28 juil. 2017 à 14:51
0
Utile
En effet x ne sert à rien. Et la fin est fausse, c'est un palindrome si y vaut 1. Pour faire un test d'égalité (en algorithme), il faut utiliser le '=' pas le ':=' (et en C++ ça serait '==')

Pour définir un algorithme on a moins de contrainte qu'une fois dans un langage donné, autant ne pas se contraindre à des variables mal typées ou mal nommées. Par exemple 'y' devrait s'appeler 'estPalindrome' et devrait être un booléen qui vaut 'vrai' ou 'faux'.

Et en C++, l'équivalent de
milieu(mot,i,1)
serait
mot[i-1]
.
Commenter la réponse de Dalfab