TD 7(corrigé)

publicité
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
Téléchargement