Correction d'un algo

theniet -  
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   -
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




A voir également:

2 réponses

Unombre Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   16
 
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   Statut Membre Dernière intervention   101
 
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