C++程式用於檢查ISBN
給定序列,任務是識別給定序列是否為ISBN號碼。
什麼是ISBN號碼?
ISBN代表國際標準書號,在2006年12月之前是10位數字,從2007年1月1日起改為13位數字。以下是10位ISBN的實現。
ISBN數字具有一定的模式:
- 前9位數字代表書籍的標題、出版商和組別。前9位數字的值範圍為0-9。
- 最後一位數字用於檢查ISBN是否正確。最後一位數字可以取值為10,並使用符號“X”表示該數字。
如何檢查給定的10位數字是否為ISBN號碼?
- 從序列的第一位數字開始,將其乘以10(因為ISBN是10位數字)。
- 繼續移動到下一位數字,並將乘數減1。
- 將所有相乘的結果相加。
- 將結果除以11。
- 應用條件來檢查ISBN號碼。
- 如果結果可以被11整除,這意味著餘數為0,則該數字為ISBN號碼。
- 如果結果不能被11整除,這意味著餘數不為0,則該數字不是ISBN號碼。
示例
Input-: 002442142X Output-: Not ISBN Input-: 007462542X Output-: it’s ISBN
演算法
Start Step 1-> declare function to check for ISBN bool isvalid(string &isbn_number) set int n = isbn_number.length() IF (n != 10) return false End Set int sum = 0 Loop For int i = 0 and i < 9 and i++ Set int value = isbn_number[i] - '0' If (0 > value || 9 < value) return false End Set sum += (value * (10 - i)) End Set char last_val = isbn_number[9] IF (last_val != 'X' && (last_val < '0' || last_val > '9')) return false End Set sum += ((last_val == 'X') ? 10 : (last_val - '0')) return (sum % 11 == 0) step 2-> In main() set string isbn_number = "002442142X" IF (isvalid(isbn_number)) Print " is Valid" End Else Print " is invalid End Stop
示例
#include <bits/stdc++.h>
using namespace std;
//check whether its a valid ISBN or not
bool isvalid(string &isbn_number) {
int n = isbn_number.length();
if (n != 10)
return false;
int sum = 0;
for (int i = 0; i < 9; i++) {
int value = isbn_number[i] - '0';
if (0 > value || 9 < value)
return false;
sum += (value * (10 - i));
}
char last_val = isbn_number[9];
if (last_val != 'X' && (last_val < '0' || last_val > '9'))
return false;
sum += ((last_val == 'X') ? 10 : (last_val - '0'));
return (sum % 11 == 0);
}
int main() {
string isbn_number = "002442142X";
if (isvalid(isbn_number))
cout<<isbn_number<<" is Valid";
else
cout<<isbn_number<<" is invalid";
return 0;
}輸出
如果執行上述程式碼,將生成以下輸出:
002442142X is invalid
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP