Giả sử, chúng ta có một chuỗi số, chúng ta phải tìm rằng số đó có thuộc cơ số B đã cho hay không? Nếu chuỗi là “101110”, b =2, thì chương trình sẽ trả về true. Nếu chuỗi là “A8F”, cơ số là 16, thì nó sẽ đúng.
Cách tiếp cận rất đơn giản. Nếu tất cả các ký tự nằm trong phạm vi ký hiệu của cơ số đã cho, thì trả về true, ngược lại là false.
Ví dụ
#include <iostream> using namespace std; bool inGivenBase(string s, int base) { if (base > 16) //program can handle upto base 1 return false; else if (base <= 10) { //for 0 to 9 for (int i = 0; i < s.length(); i++) if (!(s[i] >= '0' && s[i] < ('0' + base))) return false; } else { for (int i = 0; i < s.length(); i++) if (! ((s[i] >= '0' && s[i] < ('0' + base)) || (s[i] >= 'A' && s[i] < ('A' + base - 10)))) return false; } return true; } int main() { string str = "A87F"; int base = 16; if(inGivenBase(str, base)){ cout << str << " is in base " << base; } else { cout << str << " is not in base " << base; } }
Đầu ra
A87F is in base 16