Correction d'un algo

Fermé
theniet - Modifié le 28 juil. 2017 à 13:19
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 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




2 réponses

Unombre Messages postés 40 Date d'inscription lundi 11 juillet 2016 Statut Membre Dernière intervention 8 septembre 2017 16
28 juil. 2017 à 13:52
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 ? )
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
28 juil. 2017 à 14:51
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]
.
0