Université Bordeaux 2 Licence 1er semestre (2007/2008) Algorithmes et structures de données : TD 7(corrigé) Types, chaı̂nes de caractères, listes Exercice 7.1 Chaı̂nes de caractères Considérer une chaı̂ne de caractère dans la variable s. 1. Ecrire un algorithme qui décide si le nombre de caractères dans cette chaı̂ne de caractère s est pair ou impair. nombreCaracteres = len(s) SI (nombreCaracteres%2==0) ALORS print "le nombre de caractères est pair" SINON print "le nombre de caractères est impair" 2. Faites tourner votre algorithme pour chacune des affectations suivantes : s = "soir" s = "matin" Exercice 7.2 Chaı̂nes de caractères Considérer une chaı̂ne de caractère dans la variable s. 1. Ecrire un algorithme qui décide s’il y a plus de voyelles que de consonnes dans cette chaı̂ne de caractère s. s = "ici" voyelles= ["a", "e", "i", "o", "u", "y"] nombreVoyelles = 0 i = 0 nombreCaracteres = len(s) TANT QUE i<nombreCaracteres FAIRE j = 0 TANT QUE j < len(voyelles) FAIRE SI (s[i] == voyelles[j]) ALORS nombreVoyelles = nombreVoyelles + 1 j = j + 1 FIN TANT QUE i = i + 1 FIN TANT QUE nombreConsonnes = nombreCaracteres - nombreVoyelles afficher("nombre de voyelles : ") afficherLigne(nombreVoyelles) afficher("nombre de consonnes : ") afficherLigne(nombreConsonnes) SI nombreVoyelles > nombreConsonnes ALORS afficherLigne("Le mot contient plus de voyelles que de consonnes") SINON SI nombreVoyelles < nombreConsonnes ALORS afficherLigne("Le mot contient plus de voyelles que de consonnes") SINON afficherLigne("Le mot contient autant de voyelles que de consonnes") 2. Faites tourner votre algorithme pour chacune des affectations suivantes : s = "ici" s = "tennis" s = "bonjour" Exercice 7.3 Listes Considérer une ligne d’un jeu de sudoku : On pourrait stocker cette ligne de la grille dans la liste suivante : ligne0 = [2,9,3,8,7,1,6,4,5] 1. Ecrire un algorithme qui vérifie (dans le cas général) si une ligne est conforme au règles de sudoku. ligne0 = [2,9,3,8,7,1,6,4,5] compteur = [0,0,0,0,0,0,0,0,0,0] i = 0 TANT QUE i<=8 FAIRE nombre = ligne0[i]; compteur[nombre] = compteur[nombre] + 1 i = i + 1 FIN TANT QUE 2 sudoku = VRAI i = 1 TANT QUE i<=9 FAIRE SI (compteur[i] != 1) ALORS sudoku = FAUX i = i + 1 FIN TANT QUE SI sudoku == VRAI ALORS afficher("La ligne de sudoku est bon") else: afficher("La ligne de sudoku est faux") Exercice 7.4 Listes Considérer une liste stocké dans la variable liste qui contient des nombres entier. 1. Ecrire un algorithme qui décide s’il y a une suite de trois occurences consécutives du nombre 6. liste = [1,6,6,2,3,6] maxSuite = 0 i = 0 TANT QUE i<len(liste) FAIRE SI (liste[i] == 6) ALORS suite = suite + 1 SI suite > maxSuite ALORS maxSuite = suite SINON suite = 0 i = i + 1 FIN TANT QUE SI maxSuite >= 3 ALORS afficher("Il existe une suite de 3 fois 6") else: afficher("Il n’existe pas de suite de 3 fois 6") 2. Faites tourner votre algorithme pour chacune des affectations suivantes : liste = [1,6,6,2,3,6] liste = [1,2,6,6,6,3,6,6] 3