#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;
}
文章標籤
全站熱搜