Exercice s corrige s boucle s

Informatique UV Exercices corrigés sur les boucles Exercice Proposer un algorithme permettant de tester si une cha? ne de caractères contenue dans une variable s est un palindrome Le résultat vrai faux sera stocké dans une variable booléenne b Un palindrome est une cha? ne de caractères qui se lit de la même manière de gauche à droite et de droite à gauche Par exemple kayak est un palindrome mais baobab n ? en est pas un Correction Analyse on est donc amené à comparer les lettres d ? un mot Pour baobab par exemple nous comparons la première et la eme et dernière puis la eme et la eme puis la eme et la eme Le mot est un palindrome si pour toutes les comparaisons on a la même lettre ce qui n ? est pas le cas pour baobab Plus généralement notons n la longueur le nombre de lettres du mot Il s ? agit donc de comparer les lettres de position et n puis et n- puis et n- etc Autrement dit il s ? agit de comparer les lettres de position i et n -i pour i ? Question o? faut-il s ? arrêter Il su ?t de s ? arrêter au milieu ? du mot Pour baobab qui contient lettres on s ? arrête pour i comparaison des lettres et - Pour kayak de longueur impaire on s ? arrête pour i comparaison des lettres et Il est donc inutile de comparer quand i dépasse strictement n Solution boucle pour Première variante la plus naturelle on initialise b à vrai et on le met à faux si l ? on trouve une position o? le test ne marche pas le mot n ? est pas un palindrome Deuxième variante ça marche aussi ? on compte le nombre de tests qui sont justes Si tous les tests sont justes on met b à vrai sinon b vaut faux Il y a F EF F FA F F F EF F FAF FB n tests iquo n en Maple ?? attention à ne pas se tromper avec les cas n pair et n impair CVariante b true n length s for i from to n do if s i s n -i then b false ? od print La réponse est b Variante c n length s for i from to n do if s i s n -i then c c ? od if c iquo n then b true else b false ? print La réponse est b Remarques - on peut faire une boucle de à n au lieu de n cela marcherait tout aussi bien en changeant le test en conséquence dans la variante Simplement on ferait des tests inutiles car on ferait chaque test fois - Dès que l ? on a trouvé un test faux il est inutile de continuer le mot n ? est pas un palindrome On pourrait rajouter une instruction break après b false version Cette instruction fait

  • 40
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Aucune attribution requise
Partager