Accueil › Devoirs › Bac Maths-Sc-Tech
Devoir de synthèse n°2 : clé de Luhn, application Qt de classement des notes
Les algorithmes s'écrivent en notation algorithmique, les programmes en Python. Pour l'exercice 2, l'interface est dessinée dans Qt Designer et enregistrée sous le nom interface.ui. Barème sur 20 points.
Exercice 1 : la clé de Luhn (7 pts)
Les numéros de cartes bancaires contiennent un chiffre de contrôle qui permet de détecter une faute de frappe. On vérifie un numéro avec l'algorithme de Luhn :
- en partant du dernier chiffre (à droite), on garde le 1er chiffre, on double le 2e, on garde le 3e, on double le 4e, et ainsi de suite ;
- quand un chiffre doublé dépasse 9, on lui retire 9 (par exemple 7 × 2 = 14 devient 5) ;
- on fait la somme de tous les chiffres obtenus : le numéro est valide si cette somme est un multiple de 10.
Exemple : 79927398713. De droite à gauche : 3, 1×2 = 2, 7, 8×2 = 16 → 7, 9, 3×2 = 6, 7, 2×2 = 4, 9, 9×2 = 18 → 9, 7. Somme = 3 + 2 + 7 + 7 + 9 + 6 + 7 + 4 + 9 + 9 + 7 = 70 : le numéro est valide.
- 1) Écrire la fonction Chiffres(ch) qui renvoie Vrai si ch est formée uniquement de chiffres et contient entre 8 et 16 caractères (1,5 pt).
- 2) Écrire la fonction SommeLuhn(ch) qui renvoie la somme calculée par l'algorithme de Luhn (3,5 pts).
- 3) Écrire le programme qui lit un numéro (saisie contrôlée avec Chiffres) et affiche la somme puis « Numéro valide » ou « Numéro invalide » (2 pts).
Pour 79927398713, le programme affiche :
Somme : 70
Numéro valide
Exercice 2 : application Qt de classement des notes (13 pts)
On veut une application qui reçoit les notes d'une classe, séparées par des points-virgules (par exemple 12;15.5;8), et affiche les notes classées de la plus haute à la plus basse, la moyenne et le nombre d'admis (note ≥ 10).
L'interface contient :
- une zone de saisie txtNotes (QLineEdit) et un bouton btnClasser (QPushButton) « Classer » ;
- une liste lstNotes (QListWidget) qui reçoit les notes classées, une par ligne ;
- deux étiquettes lblMoy et lblAdmis (QLabel).
- 1) Concevoir l'interface et l'enregistrer sous le nom interface.ui (3 pts).
- 2) Écrire la fonction NoteValide(ch) qui renvoie Vrai si le texte ch représente un nombre entre 0 et 20 (2 pts).
- 3) Écrire la procédure TriDecroissant(T, n), par sélection (3 pts).
- 4) Écrire le module Play, appelé par un clic sur btnClasser : il vide la liste ; si l'une des notes n'est pas valide, il affiche « Note invalide : x » dans lblMoy (x étant le texte fautif) et vide lblAdmis ; sinon il remplit la liste et affiche « Moyenne : m » (arrondie à 2 chiffres) et « Admis : k / n » (4 pts).
- 5) Ajouter les instructions qui chargent l'interface, relient le bouton et affichent la fenêtre (1 pt).
Exemple : pour 12;15.5;8, la liste affiche 15.5, 12.0 et 8.0, puis « Moyenne : 11.83 » et « Admis : 2 / 3 ».
Correction détaillée
La correction de ce devoir est réservée aux abonnés. Elle donne l'analyse, l'algorithme en notation tunisienne, le programme Python vérifié et les erreurs fréquentes de chaque exercice. Avec un compte gratuit, tu peux ouvrir 3 corrections de ton choix.
Connecte-toi d'abord : créer un compte ou me connecter.
Tu as encore 0 correction(s) gratuite(s) à utiliser.
Il te faut un abonnement actif pour les autres corrections. Voir les tarifs ou demander un code sur WhatsApp, Instagram ou Facebook.
Mission Carthage est en période de test : le site s'ouvre avec un code d'accès. Demande ton code sur WhatsApp, Instagram ou TikTok, puis tape-le sur missioncarthage.tn.
Cette correction n'est pas encore publiée. Reviens bientôt.
Impossible de charger la correction. Vérifie ta connexion et réessaie.
Sujet original écrit pour Mission Carthage, dans le style des devoirs de synthèse du 2e trimestre du bac (Maths, Sciences expérimentales, Technique).
Tout le programme : Bac Mathématiques, Sciences expérimentales et Technique · Revoir le cours · Tous les devoirs