Signaler

Correction d'un algo

Posez votre question theniet - Dernière réponse le 28 juil. 2017 à 14:51 par Dalfab
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




Utile
+0
plus moins
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 ? )
Donnez votre avis
Utile
+0
plus moins
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]
.
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !