Aller au contenu

Index des sujets 2023

Corrigé sujet 40 - Année : 2023

Sujet 40 - 2023

Exercice 1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def nombre_de_mots(phrase):
    nbr_espaces = 0
    for caractere in phrase:
        if caractere == " ":
            nbr_espaces += 1
    if phrase[-1] == "!" or phrase[-1]=="?":
        nbr_mots = nbr_espaces
    else:
        nbr_mots = nbr_espaces + 1
    return nbr_mots

Commentaires

Le nombre de mots est le nombre d'espace plus 1, sauf lorsque la phrase se termine par un point d'exclamation ou un point d'interrogation c'est alors le nombre d'espace.

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
37
class Noeud:
    def __init__(self, valeur):
        '''Méthode constructeur pour la classe Noeud. Paramètre d'entrée : valeur (int)'''
        self.valeur = valeur
        self.gauche = None
        self.droit = None

    def getValeur(self):
        '''Méthode accesseur pour obtenir la valeur du noeud Aucun paramètre en entrée'''
        return self.valeur

    def droitExiste(self):
        '''Méthode renvoyant True si le sous-arbre droit est non  vide Aucun paramètre en entrée'''
        return (self.droit is not None)

    def gaucheExiste(self):
        '''Méthode renvoyant True si le sous-arbre gauche est non vide Aucun paramètre en entrée'''
        return (self.gauche is not None)

    def inserer(self, cle):
        '''Méthode d'insertion de clé dans un arbre binaire de recherche  Paramètre d'entrée : cle (int)'''
        if cle < self.getValeur() : #(1)
        # on insère à gauche
            if self.gaucheExiste(): #(2)
                # on descend à gauche et on recommence le test initial
                self.gauche.inserer(cle)
            else:
                # on crée un fils gauche 
                self.gauche = Noeud(cle) #(3)
        elif cle > self.getValeur() : #(4)
        # on insère à droite
            if self.droitExiste() :
            # on descend à droite et on recommence le test initial
                self.droit.inserer(cle)
            else:
            # on crée un fils droit
                self.droit = Noeud(cle)
  1. Insertion à gauche puisque la clé est inférieure à la valeur du noeud.
  2. Le fils gauche n'est pas vide, on relance l'insertion sur ce fils
  3. Le fils gauche est vide, il devient donc un nouveau noeud avec la valeur à insérer
  4. Traitement similaire pour une insertion à droite