Aller au contenu

Ep 16

le document

l'algorithme

Issue de : 23-NSI-43⚓

EXERCICE 1⚓

Écrire une fonction ecriture_binaire_entier_positif qui prend en paramĂštre un entier positif n et renvoie une chaine de caractĂšre correspondant Ă  l’écriture binaire de n.

On rappelle que : - l’écriture binaire de 25est 11001 car \(\(25=1×24+1×23+0×22+0×21+1×20\)\) ; - n % 2 vaut 0 ou 1 selon que n est pair ou impair ; - n // 2 donne le quotient de la division euclidienne de n par 2.

Il est interdit dans cet exercice d’utiliser la fonction bin de Python

Exemples :

🐍 Script Python
>>> 5 % 2
1
>>> 5 // 2
2
>>> ecriture_binaire_entier_positif(0)
'0'
>>> ecriture_binaire_entier_positif(2)
'10'
>>> ecriture_binaire_entier_positif(105)
'1101001'
RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
def ecriturepy-undbinairepy-undentierpy-undpositif(n):bksl-nl # cas particulier pour n = 0bksl-nl if n == 0:bksl-nl return '0'bksl-nl # cas gĂ©nĂ©ralbksl-nl b = ''bksl-nl while n != 0:bksl-nl b = str(n % 2) + bbksl-nl n = n // 2bksl-nl return bbksl-nlbksl-nltry:bksl-nl assert ecriturepy-undbinairepy-undentierpy-undpositif(0) == '0'bksl-nl assert ecriturepy-undbinairepy-undentierpy-undpositif(2) == '10'bksl-nl assert ecriturepy-undbinairepy-undentierpy-undpositif(105) == '1101001'bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nlbksl-nl



EXERCICE 2⚓

La fonction tri_bulles prend en paramĂštre une liste T d’entiers non triĂ©s et renvoie la liste triĂ©e par ordre croissant.

Le tri Ă  bulles est un tri en place qui commence par placer le plus grand Ă©lĂ©ment en derniĂšre position en parcourant la liste de gauche Ă  droite et en Ă©changeant au passage les Ă©lĂ©ments voisins mal ordonnĂ©s (si la valeur de l’élĂ©ment d’indice i a une valeur strictement supĂ©rieure Ă  celle de l’indice i + 1, ils sont Ă©changĂ©s). Le tri place ensuite en avant-derniĂšre position le plus grand Ă©lĂ©ment de la liste privĂ©e de son dernier Ă©lĂ©ment en procĂ©dant encore Ă  des Ă©changes d’élĂ©ments voisins. Ce principe est rĂ©pĂ©tĂ© jusqu’à placer le minimum en premiĂšre position.

Exemple : pour trier la liste [7, 9, 4, 3] :

  • premiĂšre Ă©tape : 7 et 9 ne sont pas Ă©changĂ©s, puis 9 et 4 sont Ă©changĂ©s, puis 9 et 3 sont Ă©changĂ©s, la liste est alors [7, 4, 3, 9]
  • deuxiĂšme Ă©tape : 7 et 4 sont Ă©changĂ©s, puis 7 et 3 sont Ă©changĂ©s, la liste est alors [4, 3, 7, 9]
  • troisiĂšme Ă©tape : 4 et 3 sont Ă©changĂ©s, la liste est alors [3, 4, 7, 9]

Compléter le code Python ci-dessous qui implémente la fonction tri_bulles.

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def echange(tab, i, j):
    '''Echange les éléments d'indice i et j dans le tableau tab.'''
    temp = ... 
    tab[i] = ... 
    tab[j] = ... 

def tri_bulles(tab):
    '''Trie le tableau tab dans l'ordre croissant
    par la méthode du tri à bulles.'''
    n = len(tab)
    for i in range(...): 
        for j in range(...): 
            if ... > ...: 
                echange(tab, j, ...) 
🐍 Script Python
>>> tab = []
>>> tri_bulles(tab)
>>> tab
[]
>>> tab2 = [9, 3, 7, 2, 3, 1, 6]
>>> tri_bulles(tab2)
>>> tab2
[1, 2, 3, 3, 6, 7, 9]
>>> tab3 = [9, 7, 4, 3]
>>> tri_bulles(tab3)
>>> tab3
[3, 4, 7, 9]
RĂ©ponse

Complétez le code ci-dessous

###
def tripy-undbulles(T):bksl-nl '''bksl-nl Renvoie le tableau T trié par ordre croissantbksl-nl '''bksl-nl n = len(T)bksl-nl for i in range(...,...,-1):bksl-nl for j in range(i):bksl-nl if T[j] > T[...]:bksl-nl ... = T[j]bksl-nl T[j] = T[...]bksl-nl T[j+1] = tempbksl-nl return Tbksl-nlbksl-nl



Solution

###
def echange(tab, i, j):bksl-nl '''Echange les Ă©lĂ©ments d'indice i et j dans le tableau tab.'''bksl-nl temp = tab[i]bksl-nl tab[i] = tab[j] bksl-nl tab[j] = temp bksl-nlbksl-nldef tripy-undbulles(tab):bksl-nl '''Trie le tableau tab dans l'ordre croissantbksl-nl par la mĂ©thode du tri Ă  bulles.'''bksl-nl n = len(tab)bksl-nl for i in range(n-1,-1,-1): bksl-nl for j in range(i): bksl-nl if tab[j] > tab[j+1]: bksl-nl echange(tab, j, j+1)bksl-nlbksl-nltry:bksl-nl tab = []bksl-nl tripy-undbulles(tab)bksl-nl tab == []bksl-nlbksl-nl tab2 = [9, 3, 7, 2, 3, 1, 6]bksl-nl tripy-undbulles(tab2)bksl-nl assert tab2 == [1, 2, 3, 3, 6, 7, 9]bksl-nlbksl-nl tab3 = [9, 7, 4, 3]bksl-nl tripy-undbulles(tab3)bksl-nl assert tab3 == [3, 4, 7, 9]bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nlbksl-nl



Exemple :