Percursos
/
Delphi Pascal
Delphi Pascal
/
Exercícios
/
Verificador de ISBN
Verificador de ISBN

Verificador de ISBN

Médio

Instruções

O processo de verificação do ISBN-10 é usado para validar números de identificação de livros. Normalmente contêm hífenes e têm este aspeto: 3-598-21508-8

ISBN

O formato ISBN-10 é composto por 9 algarismos (de 0 a 9) mais um caráter de verificação (que pode ser um algarismo ou apenas um X). Quando o caráter de verificação é um X, este representa o valor '10'. Estes números podem ser apresentados com ou sem hífenes, e a sua validade pode ser verificada com a seguinte 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

Se o resultado for 0, o ISBN-10 é válido; caso contrário, é inválido.

Exemplo

Vamos pegar no ISBN-10 3-598-21508-8 e substituí-lo na fórmula. Obtemos:

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

Como o resultado é 0, isto prova que o nosso ISBN é válido.

Tarefa

Dada uma string, o programa deve verificar se a string fornecida é um ISBN-10 válido. Pôr isto em prática exige alguma reflexão sobre o pré-processamento e a análise da string antes de calcular o algarismo de verificação do ISBN.

O programa deve conseguir verificar ISBN-10 tanto com hífenes de separação como sem eles.

Ressalvas

Converter strings em números pode ser complicado em certas linguagens. Agora, é ainda mais complicado, porque o algarismo de verificação de um ISBN-10 pode ser 'X' (que representa '10'). Por exemplo, 3-598-21507-X é um ISBN-10 válido.

Tarefas bónus

  • Gera um ISBN-13 válido a partir do ISBN-10 fornecido (e talvez o voltes a verificar com um verificador derivado).

  • Gera um ISBN válido, talvez até a partir de um ISBN inicial fornecido.

Editar via GitHub A ligação abre numa nova janela ou separador
Delphi Pascal Exercism

Estás pronto para começar Verificador de ISBN?

Inscreve-te no Exercism para aprenderes e dominares Delphi Pascal com 76 exercícios, e mentoria humana real, tudo grátis.