ED4 Corrige 1

Exercices dirigés séance n04 – corrigé Tableaux, Méthode de construction par récurrence Exercice 1 : Le palindrome On appelle palindrome un mot qui se lit de la même façon de gauche à droite ou de droite à gauche par exemple rotor, elle. On souhaite écrire un programme qul teste si un mot est un palindrome ou non. Question 1 Ecrire l’algorithme qui détermine si un mot est un palindrome, en utilisant une méthode de construction de boucle par récurr Question 2 Traduire cet algorith complet.

Question 3 S. wp next page écrire le programme ?crire un programme java qui initialise un tableau de caractères, détermine si c’est un palindrome et affiche le résultat. Exercice 2 : Le tri par sélection L’idée du tri par sélection est de parcourir le tableau et à chaque étape de partitionner le tableau en un sous-tableau trié et un sous-tableau non trié, tel que tout élément du sous-tableau trié soit inférieur ou égal à tout élément du sous-tableau non trié.

Un tableau est trié si tout élément du tableau est inférieur ou égal à l’élément suivant; Le partitionnement se fait de la manière suivante : on recherche ‘élément minimum dans la partie non triée et on l’échange avec le premier élément de la partie non du tri par sélection.

On considèrera deux niveaux de raffinement : Parcours du tableau de gauche à droite : o Pour toute position dans le tableau 1- Rechercher l’élément minimum à partir de cette position , 2- Placer l’élément minimum à cette position On utilisera la méthode de construction par récurrence pour construire les boucles à chaque niveau Traduire cet algorithme en une fonction, puis écrire le programme Exercice 1 Solutions Algorithme ——Question 1

Idée : parcourir simultanément le tableau à partir de la gauche et à partir de la droite, tester s’il ya égalité des caractères correspondants, SI non ce n’est pas un palindrome, si oui poursuivre le parcours, itérer le test jusqu’au parcours complet du tableau. a) Hypothèse de récurrence Soit le tableau T, à chaque pas de récurrence, on a V ke [O.. i-l], b) Condition d’arrêt soit TC] et ce n’est pas un palindrome, soit et c’est un palindrome. c) Construire le corps de b 2 Initialisation ; ; // vérifie l’hypothèse qui devient un invariant {V kC [O.. -l], } ) Algorithme { V [O.. i-ll, tant que ipréconditions t n’est pas Vide public static boolean palindrome(String t)( int i=o; int ; return false; return true; * Cette classe permet de tester si une chaine de caractères est un * palindrome. Le résultat est affiché * @author D. Enselme * @version 0. 1 public class PalindromeAvecFonctionRecursive{ public static void main( String[] args ) { String T – args[O]; if l)) System. out. println(T+ » est un palindrome »); System. out. rintln(T+ » n’est pas un palindrome »); * test palindrome – solutio 4 DE 8 – —L’idée du ri par sélection est de parcourir le tableau et à chaque étape de partitionner le tableau en un triée et on Péchange avec le premier élément de la partie non triée. Soit le tableau tab contenant n entiers . 1er niveau de raffinement : trier le tableau hypothèse de récurrence trié non trié {V ke [1 .. i-ll Condition d’arrêt partie non triée est vide S e dernier élément est {V kC [1 .. i-l], kC [i.. r,], est vraie car V ke [1.. -1] est vide et kE [O.. n], qui n’existe pas } tant que faire x Il indice du plus petit élément de t[i.. l, Echanger t[i] et t[x] ; iOi+1 ; V ke [1 .. i-l], ke [i.. nl, et Le tableau t est trié. 2ième niveau de raffinement 2. 1 Rechercher le minimum dans le sous-tableau t[i.. n] Idée : parcourir le tableau et retenir la position du minimum dans la partie parcourue Hypothèse de récurrence a parcourir parcouru min=i ; kei ; tant que ken faire si tab[k]

System. out. println(« tapez le nombre d’entiers a trier int n = in. nextlnt(); int[] t = new int[n]; // saisie et affichage de la suite de nombres à trier System. out. println (« tableau a trier for (int i=O;i