Rutas
/
Delphi Pascal
Delphi Pascal
/
Ejercicios
/
Verificador de ISBN
Verificador de ISBN

Verificador de ISBN

Media

Instrucciones

El proceso de verificación del ISBN-10 se utiliza para validar números de identificación de libros. Normalmente contienen guiones y tienen este aspecto: 3-598-21508-8

ISBN

El formato ISBN-10 consta de 9 dígitos (del 0 al 9) más un carácter de control (únicamente un dígito o una X). Cuando el carácter de control es una X, representa el valor '10'. Se pueden escribir con o sin guiones, y su validez se puede comprobar con la siguiente fórmula:

(x1 * 10 + x2 * 9 + x3 * 8 + x4 * 7 + x5 * 6 + x6 * 5 + x7 * 4 + x8 * 3 + x9 * 2 + x10 * 1) mod 11 == 0

Si el resultado es 0, el ISBN-10 es válido; en caso contrario, no lo es.

Ejemplo

Tomemos el ISBN-10 3-598-21508-8. Lo sustituimos en la fórmula y obtenemos:

(3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0

Como el resultado es 0, queda demostrado que nuestro ISBN es válido.

Tarea

Dado un string, el programa debe comprobar si el string proporcionado es un ISBN-10 válido. Llevar esto a la práctica requiere pensar un poco en cómo preprocesar y analizar el string antes de calcular el dígito de control del ISBN.

El programa debe ser capaz de verificar ISBN-10 tanto con guiones separadores como sin ellos.

Advertencias

Convertir de strings a números puede ser complicado en ciertos lenguajes. Ahora es todavía más complicado, ya que el dígito de control de un ISBN-10 puede ser una 'X' (que representa el '10'). Por ejemplo, 3-598-21507-X es un ISBN-10 válido.

Tareas adicionales

  • Genera un ISBN-13 válido a partir del ISBN-10 de entrada (y quizá vuelve a verificarlo con un verificador derivado).

  • Genera un ISBN válido, quizá incluso a partir de un ISBN de partida.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Delphi Pascal Exercism

¿Listo para empezar Verificador de ISBN?

Regístrate en Exercism para aprender y dominar Delphi Pascal con 76 ejercicios y mentoría humana real, todo gratis.