Aller au contenu

Index des sujets 2022

Corrigé sujet 13 - Année : 2022

Sujet 13 - 2022

Exercice 1

1
2
3
4
5
6
def rendu(somme_a_rendre):
    n1 = somme_a_rendre//5
    somme_a_rendre = somme_a_rendre%5
    n2 = somme_a_rendre//2
    n3 = somme_a_rendre%2
    return [n1,n2,n3]

Commentaire

  • Bien qu'au programme de première (algorithme glouton), cet exercice est bien plus difficile que ceux proposés habituellement en exercice 1 (recherche simple, recherche de maximum, calcul de moyennes, ... ).
  • La correction proposée ici utilise les trois variables n1,n2 et n3 proposées dans l'énoncé. Dans un cadre plus général, une boucle travaillant sur une liste de pièces serait préférable. Voir par exemple la correction proposée ici.

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Maillon :
    def __init__(self,v) :
        self.valeur = v
        self.suivant = None

class File :
    def __init__(self) :
        self.dernier_file = None

    def enfile(self,element) :
        nouveau_maillon = Maillon(element) #(1)
        nouveau_maillon.suivant = self.dernier_file
        self.dernier_file = nouveau_maillon #(2)

    def est_vide(self) :
        return self.dernier_file == None

    def affiche(self) :
        maillon = self.dernier_file
        while maillon != None : #(3)
            print(maillon.valeur)
            maillon = maillon.suivant #(4)

    def defile(self) :
        if not self.est_vide() :
            if self.dernier_file.suivant == None :
                resultat = self.dernier_file.valeur
                self.dernier_file = None
                return resultat
            maillon = self.dernier_file #(5)
            while maillon.suivant.suivant != None :
                maillon = maillon.suivant
            resultat = maillon.suivant.valeur
            maillon.suivant = None
            return resultat
        return None 
  1. Le constructeur de la classe Maillon prend en argument la valeur v (appelée ici element)
  2. Comme indiqué dans l'énoncé, l'attribut dernier_file doit contenir le dernier maillon enfilé.
  3. La fin de file est atteinte lorsque le maillon vaut None
  4. Passage au maillon suivant
  5. On commence au dernier maillon en s'assurant avant que le maillon suivant n'est pas None

Attention

  1. L'implémentation d'une file proposée ici est problématique, pour défiler, il faut partir de la fin (seul accès à la file), la remonter en entier afin de défiler le premier.
  2. Faire un schéma de l'implémentation proposée peut aider à la compréhension du code donné dans l'énoncé.