Aller au contenu

Index des sujets 2022

Corrigé sujet 12 - Année : 2022

Sujet 12 - 2022

Exercice 1

1
2
3
4
5
6
def moyenne(tab):
    assert tab!=[], "erreur"
    somme = 0
    for valeur in tab:
        somme = somme + valeur
    return somme/len(tab)

Commentaire

  1. Le traitement demandé dans le cas d'un tableau vide n'est pas explicite, on ne sait pas s'il faut juste faire un print(erreur) ou plutôt utiliser un assert (comme dans cette correction)

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
def tri(tab):
    #i est le premier indice de la zone non triee, j le dernier indice. 
    #Au debut, la zone non triee est le tableau entier.
    i= 0
    j= len(tab)-1 #(1)
    while i != j :
        if tab[i]== 0:
            i = i + 1 #(2) 
        else :
            valeur = tab[j]
            tab[j] = tab[i] #(3)
            tab[i] = valeur
            j= j-1 #(4)
    return tab
  1. Le dernier élément d'un tableau tab a pour indice len(tab)-1
  2. Si l'élément est un 0, on incrémente le debut de la zone non triée d'indice i. La zone non triée diminue "par la gauche".
  3. Sinon, on échange cette valeur avec la fin de zone non triée (située en indice j).
  4. La zone non triée diminue "par la droite", on décrémente donc sa fin d'indice j

Attention

Les lignes 10 à 12 qui permettent d'échanger tab[j] et tab[i] en utilisant la variable temporaire valeur peuvent être simplifiées en remarquant que tab[i] vaut forcément 1 dans cette branche du if.