Le processus de vérification ISBN-10 sert à valider les numéros d'identification des livres.
Ceux-ci contiennent normalement des tirets et se présentent ainsi : 3-598-21508-8
Le format ISBN-10 est composé de 9 chiffres (de 0 à 9) plus un caractère de contrôle (un chiffre ou uniquement un X). Lorsque le caractère de contrôle est un X, il représente la valeur « 10 ». Ces numéros peuvent être écrits avec ou sans tirets, et leur validité peut être vérifiée par la formule suivante :
(d₁ * 10 + d₂ * 9 + d₃ * 8 + d₄ * 7 + d₅ * 6 + d₆ * 5 + d₇ * 4 + d₈ * 3 + d₉ * 2 + d₁₀ * 1) mod 11 == 0
Si le résultat est 0, alors l'ISBN-10 est valide, sinon il est invalide.
Prenons l'ISBN-10 3-598-21508-8.
On l'injecte dans la formule et on obtient :
(3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0
Le résultat étant 0, cela prouve que notre ISBN est valide.
Étant donné une string, le programme doit vérifier si la string fournie est un ISBN-10 valide. Mettre cela en place demande un peu de réflexion sur le prétraitement et l'analyse de la string avant de calculer le chiffre de contrôle de l'ISBN.
Le programme doit pouvoir vérifier un ISBN-10 avec et sans tirets de séparation.
Convertir des strings en nombres peut être délicat dans certains langages.
Ici, c'est encore plus délicat puisque le chiffre de contrôle d'un ISBN-10 peut être « X » (qui représente « 10 »).
Par exemple, 3-598-21507-X est un ISBN-10 valide.
Inscris-toi sur Exercism pour apprendre et maîtriser C++ avec 19 concepts100 exercices, et un vrai mentorat humain, le tout gratuitement.