Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<conio.h>
- #include<ctype.h>
- #include<stdlib.h>
- void menu();
- int checkdigit(int *);
- void strint(char *, int *);
- void main()
- {
- menu();
- }
- void strint(char *input, int *output) //string to int array
- {
- for (int index = 0; index<9; index++)
- {
- if (isdigit(input[index]))
- {
- output[index] = input[index] - '0';
- }
- else
- {
- printf("\n\nInvalid input, nondigit character detected");
- break;
- }
- }
- }
- int checkdigit(int *input)
- {
- int sum = 0;
- for (int index = 0; index<9; index++)
- {
- sum += (index + 1)*input[index];
- }
- return sum % 11;
- }
- void menu()
- {
- char cinput[12];
- int output[12];
- int choice = 1;
- do {
- system("cls");
- printf("\n\t\t\tPlease choose an option;\n\n");
- printf("\t\t1.\tGenerate an ISBN-10 check digit\n");
- printf("\t\t2.\tValidate an ISBN-10\n\n");
- printf("\t\t0.\tExit program\n\n\t\t");
- scanf_s("%d", &choice);
- getchar();
- switch (choice)
- {
- case 1:
- system("cls");
- printf("\n\t\tEnter the 9 digit partial ISBN-10:\n\t\t");
- fgets(cinput, 10, stdin);
- strint(cinput, output);
- printf("\n\n\t\tThe checkdigit for %9s is %c", cinput, checkdigit(output)<10 ? checkdigit(output) +'0':'X');
- printf("\n\t\tPress any key to continue");
- _getch();
- break;
- case 2:
- system("cls");
- printf("\n\t\tEnter ISBN-10 for validation:\n\t\t");
- fgets(cinput, 11, stdin);
- if (cinput[9] == 'X' || cinput[9] == 'x')
- {
- cinput[9] = '1';
- cinput[10] = '0';
- cinput[11] = '\0';
- }
- strint(cinput, output);
- if (checkdigit(output) == atoi(&cinput[9]))
- printf("\n\n\t\tThe ISBN-10 is valid. \n\t\tActual Check Digit %2d = %c",checkdigit(output), atoi(&cinput[9])<10? atoi(&cinput[9])+'0':'X');
- else printf("\n\n\t\tThe ISBN-10 is invalid. \n\t\tActual Check Digit %2d =/= %c", checkdigit(output), atoi(&cinput[9])<10 ? atoi(&cinput[9]) + '0' : 'X');
- printf("\n\t\tPress any key to continue");
- _getch();
- break;
- }
- } while (choice);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement