//File ISBN Validation System.cpp
//Purpose:
// Program to identify and validate an ISBN number.
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
char one = 0; // variable that is always a number
char two = 0; // variable that can either be a variable or a hyphen
char three = 0; // variable that can either be a variable or a hyphen
char four = 0; // variable that can either be a variable or a hyphen
char five = 0; // variable that can either be a variable or a hyphen
char six = 0; // variable that can either be a variable or a hyphen
char seven = 0; // variable that can either be a variable or a hyphen
char eight = 0; // variable that can either be a variable or a hyphen
char nine = 0; // variable that can either be a variable or a hyphen
char ten = 0; // variable that can either be a variable or a hyphen
char eleven = 0; // variable that can either be a variable or a hyphen
char twelve = 0; // variable that is always a hyphen
char thirteen = 0; // variable that is always a number
int sum = 0; // sum of the first nine characters
int remainder = 0; // remainder variable used to check validation
cout << " ISBN Validation System"<< endl << endl;
cout << "Enter ISBN number: "; // Where the ISBN number is entered
cin >> one >> two >> three >> four >> five >> six >> seven >> eight >> nine >> ten >> eleven >> twelve >> thirteen; // Where character variables will get their value
switch (one) // corrects if invalid character is entered for each variable
{
case '0':
one = '0';
break;
case '1':
one = 1;
break;
case '2':
one = '2';
break;
case '3':
one = '3';
break;
case '4':
one = '4';
break;
case '5':
one = '5';
break;
case '6':
one = '6';
break;
case '7':
one = '7';
break;
case '8':
one = '8';
break;
case '9':
one = '9';
break;
default:
cout << "Wrong character entered for first number, please try again" << endl;
}
switch (two)
{
case '0':
two = '0';
break;
case '1':
two = '1';
break;
case '2':
two = '2';
break;
case '3':
two = '3';
break;
case '4':
two = '4';
break;
case '5':
two = '5';
break;
case '6':
two = '6';
break;
case '7':
two = '7';
break;
case '8':
two = '8';
break;
case '9':
two = '9';
break;
case '-':
two = '-';
break;
default:
cout << "Wrong character entered for second number, please try again" << endl;
}
switch (three)
{
case '0':
three = '0';
break;
case '1':
three = '1';
break;
case '2':
three = '2';
break;
case '3':
three = '3';
break;
case '4':
three = '4';
break;
case '5':
three = '5';
break;
case '6':
three = '6';
break;
case '7':
three = '7';
break;
case '8':
three = '8';
break;
case '9':
three = '9';
break;
case '-':
three = '-';
break;
default:
cout << "Wrong character entered for third number, please try again" << endl;
}
switch (four)
{
case '0':
four = '0';
break;
case '1':
four = '1';
break;
case '2':
four = '2';
break;
case '3':
four = '3';
break;
case '4':
four = '4';
break;
case '5':
four = '5';
break;
case '6':
four = '6';
break;
case '7':
four = '7';
break;
case '8':
four = '8';
break;
case '9':
four = '9';
break;
case '-':
four = '-';
break;
default:
cout << "Wrong character entered for fourth number, please try again" << endl;
}
switch (five)
{
case '0':
five = '0';
break;
case '1':
five = '1';
break;
case '2':
five = '2';
break;
case '3':
five = '3';
break;
case '4':
five = '4';
break;
case '5':
five = '5';
break;
case '6':
five = '6';
break;
case '7':
five = '7';
break;
case '8':
five = '8';
break;
case '9':
five = '9';
break;
case '-':
five = '-';
break;
default:
cout << "Wrong character entered for fifth number, please try again" << endl;
}
switch (six)
{
case '0':
six = '0';
break;
case '1':
six = '1';
break;
case '2':
six = '2';
break;
case '3':
six = '3';
break;
case '4':
six = '4';
break;
case '5':
six = '5';
break;
case '6':
six = '6';
break;
case '7':
six = '7';
break;
case '8':
six = '8';
break;
case '9':
six = '9';
break;
case '-':
six = '-';
break;
default:
cout << "Wrong character entered for sixth number, please try again" << endl;
}
switch (seven)
{
case '0':
seven = '0';
break;
case '1':
seven = '1';
break;
case '2':
seven = '2';
break;
case '3':
seven = '3';
break;
case '4':
seven = '4';
break;
case '5':
seven = '5';
break;
case '6':
seven = '6';
break;
case '7':
seven = '7';
break;
case '8':
seven = '8';
break;
case '9':
seven = '9';
break;
case '-':
seven = '-';
break;
default:
cout << "Wrong character entered for seventh number, please try again" << endl;
}
switch (eight)
{
case '0':
eight = '0';
break;
case '1':
eight = '1';
break;
case '2':
eight = '2';
break;
case '3':
eight = '3';
break;
case '4':
eight = '4';
break;
case '5':
eight = '5';
break;
case '6':
eight = '6';
break;
case '7':
eight = '7';
break;
case '8':
eight = '8';
break;
case '9':
eight = '9';
break;
case '-':
eight = '-';
break;
default:
cout << "Wrong character entered for eighth number, please try again" << endl;
}
switch (nine)
{
case '0':
nine = '0';
break;
case '1':
nine = '1';
break;
case '2':
nine = '2';
break;
case '3':
nine = '3';
break;
case '4':
nine = '4';
break;
case '5':
nine = '5';
break;
case '6':
nine = '6';
break;
case '7':
nine = '7';
break;
case '8':
nine = '8';
break;
case '9':
nine = '9';
break;
case '-':
nine = '-';
break;
default:
cout << "Wrong character entered for ninth number, please try again" << endl;
}
switch (ten)
{
case '0':
ten = '0';
break;
case '1':
ten = '1';
break;
case '2':
ten = '2';
break;
case '3':
ten = '3';
break;
case '4':
ten = '4';
break;
case '5':
ten = '5';
break;
case '6':
ten = '6';
break;
case '7':
ten = '7';
break;
case '8':
ten = '8';
break;
case '9':
ten = '9';
break;
case '-':
ten = '-';
break;
default:
cout << "Wrong character entered for tenth number, please try again" << endl;
}
switch (eleven)
{
case '0':
eleven = '0';
break;
case '1':
eleven = '1';
break;
case '2':
eleven = '2';
break;
case '3':
eleven = '3';
break;
case '4':
eleven = '4';
break;
case '5':
eleven = '5';
break;
case '6':
eleven = '6';
break;
case '7':
eleven = '7';
break;
case '8':
eleven = '8';
break;
case '9':
eleven = '9';
break;
case '-':
eleven = '-';
break;
default:
cout << "Wrong character entered for tenth number, please try again" << endl;
}
switch (eleven)
{
case '0':
eleven = '0';
break;
case '1':
eleven = '1';
break;
case '2':
eleven = '2';
break;
case '3':
eleven = '3';
break;
case '4':
eleven = '4';
break;
case '5':
eleven = '5';
break;
case '6':
eleven = '6';
break;
case '7':
eleven = '7';
break;
case '8':
eleven = '8';
break;
case '9':
eleven = '9';
break;
default:
cout << "Wrong character entered for eleventh number, please try again" << endl;
}
switch (twelve)
{
case '-':
twelve = '-';
break;
default:
cout << "Wrong character entered for twelvth number, please try again" << endl;
}
switch (thirteen)
{
case '0':
thirteen = '0';
break;
case '1':
thirteen = '1';
break;
case '2':
thirteen = '2';
break;
case '3':
thirteen = '3';
break;
case '4':
thirteen = '4';
break;
case '5':
thirteen = '5';
break;
case '6':
thirteen = '6';
break;
case '7':
thirteen = '7';
break;
case '8':
thirteen = '8';
break;
case '9':
thirteen = '9';
break;
default:
cout << "Wrong character entered for thirteenth number, please try again" << endl;
} // corrects if invalid character is entered
if(two != '-'){ // picks which equation to use
if(three != '-'){
if(four != '-'){
if(five != '-'){
if(six != '-'){
if(seven != '-'){
sum = (one + 2*two + 3*three + 4*four + 5*five + 6*six + 7*seven + 8*nine + 9*eleven - 2160);}
else if(nine != '-'){
sum = (one + 2*two + 3*three + 4*four + 5*five + 6*six + 7*eight + 8*nine + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*four + 5*five + 6*six + 7*eight + 8*ten + 9*eleven - 2160);
}
else if(eight != '-'){
if(nine != '-'){
sum = (one + 2*two + 3*three + 4*four + 5*five + 6*seven + 7*eight + 8*nine + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*four + 5*five + 6*seven + 7*eight + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*four + 5*five + 6*seven + 7*nine + 8*ten + 9*eleven - 2160);
}
else if(seven != '-'){
if(eight != '-'){
if(nine != '-'){
sum = (one + 2*two + 3*three + 4*four + 5*six + 6*seven + 7*eight + 8*nine + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*four + 5*six + 6*seven + 7*eight + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*four + 5*six + 6*seven + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*four + 5*six + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);
}
else if(six != '-'){
if(seven != '-'){
if(eight != '-'){
if(nine != '-'){
sum = (one + 2*two + 3*three + 4*five + 5*six + 6*seven + 7*eight + 8*nine + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*five + 5*six + 6*seven + 7*eight + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*five + 5*six + 6*seven + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*five + 5*six + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*three + 4*five + 5*seven + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);
}
else if(five != '-'){
if(six != '-'){
if(seven != '-'){
if(eight != '-'){
if(nine != '-'){
sum = (one + 2*two + 3*four + 4*five + 5*six + 6*seven + 7*eight + 8*nine + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*four + 4*five + 5*six + 6*seven + 7*eight + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*four + 4*five + 5*six + 6*seven + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*four + 4*five + 5*six + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*four + 4*five + 5*seven + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*two + 3*four + 4*six + 5*seven + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);
}
else if(four != '-'){
if(five != '-'){
if(six != '-'){
if(seven != '-'){
if(eight != '-'){
if(nine != '-'){
sum = (one + 2*three + 3*four + 4*five + 5*six + 6*seven + 7*eight + 8*nine + 9*eleven - 2160);}
else
sum = (one + 2*three + 3*four + 4*five + 5*six + 6*seven + 7*eight + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*three + 3*four + 4*five + 5*six + 6*seven + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*three + 3*four + 4*five + 5*six + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*three + 3*four + 4*five + 5*seven + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*three + 3*four + 4*six + 5*seven + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);}
else
sum = (one + 2*three + 3*five + 4*six + 5*seven + 6*eight + 7*nine + 8*ten + 9*eleven - 2160);
remainder = (sum%11) + 48; // finds the remainder of the sum
if(thirteen == remainder) // validates ISBN number by thirteenth character
cout << endl << "The ISBN number, " << one << two << three << four << five << six << seven << eight << nine << ten << eleven <<twelve << thirteen << " is VALID." << endl << endl; // If ISBN number is valid
else
cout << endl << "The ISBN number, " << one << two << three << four << five << six << seven << eight << nine << ten << eleven << twelve << thirteen << " is INVALID. Check digit is invalid" << endl << endl; // if ISBN number is invalid
return 0; // end program
}