JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 11 · Exercice de TD
Vérifier un ISBN
Erreurs, stockage et qualité du code · niveau 2
Énoncé
Un ISBN-13 compte 13 chiffres (tirets et espaces ignorés). Sa clé de contrôle : en pondérant les chiffres alternativement par 1 et 3 (en commençant par 1), la somme doit être un multiple de 10. Écrire analyserIsbn(texte), qui renvoie les 13 chiffres sans séparateur, ou lève une ErreurValidation (champ "isbn") avec un message qui dit ce qui ne va pas. L'essayer sur « 978-2-9563000-1-4 », « 978-2-9563000-1-5 », « 97829563 » et « 978 2 9563000 6 9 ».
Corrigé
export function analyserIsbn(texte) {
const chiffres = texte.replaceAll("-", "").replaceAll(" ", "");
if (!/^\d{13}$/.test(chiffres)) {
throw new ErreurValidation("isbn", `« ${texte} » : un ISBN compte 13 chiffres`);
}
// Clé de contrôle : poids 1 et 3 alternés, la somme doit être un multiple de 10.
let somme = 0;
for (let i = 0; i < 13; i++) {
somme += Number(chiffres[i]) * (i % 2 === 0 ? 1 : 3);
}
if (somme % 10 !== 0) {
throw new ErreurValidation("isbn", `« ${texte} » : clé de contrôle incorrecte`);
}
return chiffres;
}
valide : 9782956300014
isbn : « 978-2-9563000-1-5 » : clé de contrôle incorrecte
isbn : « 97829563 » : un ISBN compte 13 chiffres
valide : 9782956300069
L'appelant teste e instanceof ErreurValidation pour afficher le message à côté du champ concerné, et relève toute autre erreur.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.