#include #include using namespace std; int char_to_int(char c) { //回傳 -1 表示這個 ISBN 是錯誤的 if(c >= '0' && c <= '9') return c - '0'; else if(c == 'X') return 10; else if(c == '-' || c == ' ') return -1; else return -2; } bool CheckISBN(string input) { // input 的長度沒有多大意義,因為不知道會有幾個 '-' 符號 // 所以,重點在是不是剛好有 10 個合法的 digit int valid_number_count = 0; int partial_sums[10]; int* ptr = partial_sums; for(int i=0;i 10) return false; if(ptr != partial_sums) *ptr = *(ptr - 1) + flag; else *ptr = flag; ++ptr; } } if(valid_number_count == 10) { //看看Running Total是不是能整除 11 int total = 0; for(int i=0;i<10;++i) total += partial_sums[i]; if(total % 11 == 0) return true; } return false; } string trim(string& s, const string& drop = " ") { // trim right s.erase(s.find_last_not_of(drop)+1); // trim left return s.erase(0,s.find_first_not_of(drop)); } int main() { string input; while(getline(cin, input)) { //trim input = trim(input); if(CheckISBN(input)) { cout << input << " is correct." << endl; } else { cout << input << " is incorrect." << endl; } } return 0; }
文章標籤
全站熱搜
創作者介紹
創作者 eric30 的頭像
eric30

*Our Blog*

eric30 發表在 痞客邦 留言(0) 人氣(0)