Algorithmique/Python Master “Technologie et Handicap” : Intensifs 1 Examen du 8 octobre 2012, 17h Durée 2h, documents (poly et notes de cours) autorisés Correction 1 Algorithmique 1. On souhaite écrire une fonction pour permutter 2 éléments d’indices i et j d’un tableau d’entiers. (a) Quels sont les arguments de cette fonction ? (b) Écrire la fonction. Solution : (a) Il faut passer en argument le tableau, sa longueur et les indices à permutter. (b) fonction permutter(var t: entier[] par reference, i, j, n : entier par valeur) var tmp:entier debut si 0≤i et i<n et 0≤j et j<n alors tmp=t[i] t[i]=t[j] t[j]=tmp sinon // erreur finsi fin 2. Écrire une fonction permettant d’aller chercher le plus petit élément d’un tableau donné en argument. La fonction renverra l’indice du plus petit élément trouvé. Solution : fonction pluspetiti(var t: entier[] par reference, n: entier par valeur):entier var imin,i:entier debut si n>0 alors imin=0 pour i allant de 1 a n-1 faire si t[min]>t[i] alors imin=i finsi fait retourner imin sinon // erreur finsi fin Master Handi – Université Paris 8 – 2012 Algo/Python 3. Écrire une fonction (inspirée de la précédente) permettant d’aller chercher le plus petit élément d’une partie d’un tableau donné en argument. On passera en argument le tableau et sa longueur, ainsi que les indices de début et de fin de la partie du tableau qui nous intéresse. La fonction renverra l’indice de ce plus petit élément. Exemple Si un tableau tab contient [1, 4, 3, 7, 2], la fonction pluspetitdusoustableau(tab,5,1,3) renverra la valeur 2 (indice de la case contenant la plus petite valeur du sous tableau [4, 3, 7], délimité par l’indice de début 1 et l’indice de fin 3. Solution : fonction pluspetiti(var t: entier[] par reference, n, p, q: entier par valeur):entier var imin,i:entier debut si n≥q et q≥p et p≥0 alors imin=p pour i allant de p+1 a q faire si t[min]>t[i] alors imin=i finsi fait retourner imin sinon // erreur finsi fin 4. En utilisant les fonctions précédentes, écrire une fonction permettant de trier un tableau du plus petit au plus grand. Solution : fonction trier(var t: entier[] par reference, n : entier par valeur) var i:entier debut pour i allant de 0 a n-1 faire imin=pluspetiti(t, n, i, n) permutter(t,i,imin) // ou directement : permutter(t,i,pluspetiti(t, n, i, n)) fait fin 2 Python Écrire un programme qui affiche un triangle de taille n avec des étoiles. Exemple Solution : Solution plus simple : # python triangle.py n? 4 * ** *** **** a=input("n?") s="" for i in range(a): for j in range(i): s+="*" s+="\n" print s a=input("n?") s="" for i in range(a): s+="*" print s Master Handi – Université Paris 8 – 2012 Algo/Python