Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra số có thuộc cơ số cho trước trong C++


Cho một chuỗi số và cơ số B. Kiểm tra xem chuỗi đó có phải là số hợp lệ trong cơ số B hay không. Ví dụ "101110" cơ số 2 → true, "A8F" cơ số 16 → true.

Cách làm: kiểm tra mọi ký tự có nằm trong tập ký hiệu của cơ số B hay không. Cơ số ≤ 10 dùng '0'..'9', cơ số > 10 thêm 'A'..'F'.

Ví dụ

#include <iostream>
using namespace std;

bool inGivenBase(string s, int base) {
    if (base > 16)
        return false;
    else if (base <= 10) {
        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;
    }
}

Kết quả

A87F is in base 16