0% found this document useful (0 votes)
30 views

PFC - Workshop 3: Question: Input and Check ISBN Number

This document provides instructions for writing a program to validate International Standard Book Numbers (ISBNs). An ISBN has 10 digits where the rightmost digit is a check digit calculated using modulo 11. The program should accept ISBNs as long long integers, validate the check digit calculation, and indicate whether each input ISBN is valid or invalid until the user enters 0.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

PFC - Workshop 3: Question: Input and Check ISBN Number

This document provides instructions for writing a program to validate International Standard Book Numbers (ISBNs). An ISBN has 10 digits where the rightmost digit is a check digit calculated using modulo 11. The program should accept ISBNs as long long integers, validate the check digit calculation, and indicate whether each input ISBN is valid or invalid until the user enters 0.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

PFC - Workshop 3

Question: Input and check ISBN number.


ISBN

This problem is slightly more difficult than the above problem. This one requires a data type that
stores 10 digits.

Background

Publishers and bookstores use a number system called the International Standard Book Number (ISBN)
system to identify books. At the start of publication, each book is assigned a unique ISBN. An ISBN,
once assigned, can never be re-used. Click here for detailed information on this numbering system.

An ISBN consists of exactly 10 digits. The rightmost digit is the check digit. The check digit is
validated modulo 11.

• multiply each digit from the first to the ninth by a weight from 10 to 2 respectively (the first
digit by 10, the second by 9,..., the ninth by 2).
• the sum of the products plus the check digit should be divisible without remainder by 11.
• if there is a remainder, the whole number is not a valid ISBN.

Consider the following example:

ISBN 0003194876
|
check digit is 6
add first set of alternates to themselves
0 0 0 3 1 9 4 8 7
10 9 8 7 6 5 4 3 2
0 0 0 21 6 45 16 24 14 = 126
add check digit 6
total 132
divide by 11 12
remainder 0
Therefore this ISBN is valid

Specifications

Design a program that validates an ISBN. Your program keeps accepting a whole number and
determining if that whole number is a valid ISBN. Your program terminates when the user enters 0 as
the whole number.

The output from your program looks something like:

ISBN Validator
==============
ISBN (0 to quit): 0003194876
This is a valid ISBN.
ISBN (0 to quit): 0003194875
This is not a valid ISBN.
ISBN (0 to quit): 0
Have a Nice Day!

The data type long only guarantees room for 9 digits. The data type long long guarantees room for an
integer with well over 12 digits (at least 64 bits of precision). The conversion specifier for a long long
integer is %lld. The Borland 5.5 compiler does not include the long long data type, but instead
provides __int64 and %I64d instead of %lld as the conversion specifier.

You might also like