Exercices d'entraînement

Entraîne-toi sur des exercices types du BAC NSI avec corrections détaillées.

6 exercices
Filtrer :
6 exercice(s)

Implémentation d'une pile avec liste chaînée

Structures de donnéesMoyen20 min4 pts

Énoncé

On souhaite implémenter une pile à l'aide d'une liste chaînée. La classe Maillon est définie ainsi : ```python class Maillon: def __init__(self, valeur, suivant=None): self.valeur = valeur self.suivant = suivant ``` 1. Écrire une classe Pile avec les méthodes : - est_vide() : renvoie True si la pile est vide - empiler(x) : ajoute x au sommet de la pile - depiler() : retire et renvoie l'élément au sommet - sommet() : renvoie l'élément au sommet sans le retirer 2. Quelle est la complexité de chaque opération ?

Parcours en largeur d'un graphe

AlgorithmiqueDifficile25 min5 pts

Énoncé

On représente un graphe non orienté par un dictionnaire d'adjacence : ```python graphe = { 'A': ['B', 'C'], 'B': ['A', 'D', 'E'], 'C': ['A', 'F'], 'D': ['B'], 'E': ['B', 'F'], 'F': ['C', 'E'] } ``` 1. Écrire une fonction parcours_largeur(graphe, depart) qui renvoie la liste des sommets visités en parcours en largeur (BFS) depuis le sommet depart. 2. Modifier la fonction pour qu'elle renvoie également les distances de chaque sommet par rapport au départ. 3. Quelle est la complexité de l'algorithme ?

Requêtes SQL sur une base de données

Bases de donnéesMoyen15 min4 pts

Énoncé

Soit le schéma relationnel suivant : - LIVRE(isbn, titre, annee_publication, editeur_id) - AUTEUR(id_auteur, nom, prenom, nationalite) - ECRIRE(isbn, id_auteur) - EDITEUR(id_editeur, nom_editeur, ville) Écrire les requêtes SQL pour : 1. Afficher les titres des livres publiés après 2020. 2. Afficher le nom et prénom des auteurs français, triés par nom. 3. Afficher le titre des livres et le nom de leur éditeur. 4. Compter le nombre de livres par éditeur, n'afficher que ceux ayant plus de 5 livres. 5. Afficher les auteurs ayant écrit plus de 3 livres.

Récursivité : tours de Hanoï

AlgorithmiqueDifficile20 min5 pts

Énoncé

Le problème des tours de Hanoï consiste à déplacer n disques de la tour A vers la tour C en utilisant une tour B auxiliaire, avec les règles suivantes : - On ne peut déplacer qu'un disque à la fois - Un disque ne peut être posé que sur un disque plus grand 1. Écrire une fonction récursive hanoi(n, source, auxiliaire, destination) qui affiche les mouvements à effectuer. 2. Combien de mouvements sont nécessaires pour n disques ? 3. Prouver que la complexité est en O(2^n).

Conversion binaire et complément à deux

Représentation des donnéesFacile10 min3 pts

Énoncé

1. Convertir le nombre décimal 45 en binaire. 2. Convertir le nombre binaire 10110011 en décimal. 3. Sur 8 bits en complément à deux : a) Représenter -42 b) Quel entier représente 11010110 ? 4. Expliquer pourquoi sur n bits en complément à deux, on peut représenter les entiers de -2^(n-1) à 2^(n-1) - 1.

Arbre binaire de recherche

Structures de donnéesMoyen25 min5 pts

Énoncé

On définit un arbre binaire par la classe : ```python class Noeud: def __init__(self, valeur, gauche=None, droite=None): self.valeur = valeur self.gauche = gauche self.droite = droite ``` 1. Écrire une fonction recherche(arbre, x) qui renvoie True si x est dans l'ABR, False sinon. 2. Écrire une fonction inserer(arbre, x) qui insère x dans l'ABR et renvoie la racine. 3. Écrire une fonction infixe(arbre) qui renvoie la liste des valeurs en parcours infixe. 4. Que remarque-t-on sur le résultat du parcours infixe d'un ABR ?
EdTech AI