Devoir de contrôle n°2 : enregistrements, PGCD d'un tableau, somme de fractions
Les algorithmes s'écrivent en notation algorithmique avec leurs tableaux de déclaration (TDNT, TDO), les programmes en Python. En Python, un enregistrement est représenté par un dictionnaire. Barème sur 20 points.
Exercice 1 : le stock d'une librairie (7 pts)
Chaque livre d'une librairie est décrit par un enregistrement Livre : titre (chaîne), prix (réel, en dinars) et qte (entier, le nombre d'exemplaires en stock).
- 1) Déclarer le type Livre et le type TabLivres (tableau de 50 Livre) dans un TDNT (1 pt).
- 2) Écrire la procédure Saisir(T, n) : le prix doit être strictement positif et la quantité positive ou nulle (2 pts).
- 3) Écrire la fonction Valeur(T, n) qui renvoie la valeur totale du stock (somme des prix × quantités) (2 pts).
- 4) Écrire la procédure Ruptures(T, n) qui affiche les titres des livres dont la quantité est nulle, ou « Aucune rupture » (2 pts).
Pour n = 3 et les livres Algo 12.5 4, Python 20 0, Web 8 10, le programme affiche :
Valeur du stock : 130.0
Python
Exercice 2 : le PGCD et le PPCM d'un tableau (7 pts)
On rappelle l'algorithme d'Euclide : tant que b ≠ 0, on remplace (a, b) par (b, a mod b) ; le PGCD est alors a. Le PPCM de deux entiers vaut a × b / PGCD(a, b).
- 1) Écrire la fonction PGCD(a, b) (2 pts).
- 2) Écrire la fonction PPCM(a, b) (1 pt).
- 3) Le PGCD de plusieurs nombres se calcule de proche en proche : PGCD(a, b, c) = PGCD(PGCD(a, b), c), et de même pour le PPCM. Écrire le programme qui lit n (2 ≤ n ≤ 10) puis n entiers strictement positifs (saisie contrôlée), et affiche leur PGCD et leur PPCM (3 pts).
- 4) Dérouler PGCD(84, 36) (1 pt).
Pour n = 3 et les valeurs 12, 18, 30, le programme affiche :
PGCD : 6
PPCM : 180
Exercice 3 : additionner deux fractions (6 pts)
Une fraction est un enregistrement Fraction formé de deux entiers : num (numérateur) et den (dénominateur, non nul).
- 1) Écrire la procédure Simplifier(F) qui rend la fraction F irréductible et met le signe au numérateur (dénominateur positif) (2 pts).
- 2) Écrire la fonction Somme(F1, F2) qui renvoie la fraction F1 + F2 simplifiée : a/b + c/d = (a × d + c × b) / (b × d) (2 pts).
- 3) Écrire le programme qui lit deux fractions (dénominateurs non nuls, saisie contrôlée) et affiche leur somme sous la forme num/den, ou seulement num si den vaut 1 (2 pts).
Pour 1/6 et 1/3, le programme affiche : 1/2
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 contrôle du 2e trimestre de 3ème Sciences de l'informatique (enregistrements et arithmétique).
Tout le programme : 3ème année Sciences de l'informatique · Revoir le cours · Tous les devoirs