Lập hàm kiểm tra số nguyên dương n có phải số lẻ không

Bài viết hôm nay mình sẽ hướng dẫn các bạn cách viết chương trình kiểm tra số nguyên dương có toàn chữ số chẵn hay không. Nào chúng ta cùng bắt đầu thôi !

  • Input

  •  
  • Output

  •  

Cách kiểm tra số nguyên dương có toàn chữ số chẵn

Cách làm là chúng ta sẽ viết một hàm check để kiểm tra số nguyên dương có toàn chữ số chẵn, hàm check sẽ trả về kiểu bool.Trong hàm check ta kiểm tra lần lượt từng chữ số của số nguyên dương đang xét. Nếu ta gặp một số lẻ thì lập tức trả về false và kết thúc hàm. Nếu duyệt hết các chữ số của số nguyên dương rồi nhưng vẫn không trả về giá trị, thì số dương đó sẽ toàn số lẻ. Ta trả về giá trị true cho hàm.

Code tham khảo:

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#include

#include

using namespace std;

bool check(int n) {

    while (n > 0) {

        int temp = n % 10;

        if (temp % 2 == 1)

            return false;

        n /= 10;

    }

    return true;

}

int main()

{

    int n;

    do {

        cout << "Nhap vao gia tri(n>=0): ";

        cin >> n;

    } while (n < 0);

    if (check(n) == true)

        cout << "YES";

    else

        cout << "NO";

    return 0;

}

Sau khi chạy ta có kết quả sau:

Nhap vao gia tri(n>=0): 246

YES

Cải thiện chương trình kiểm tra số nguyên dương có toàn số chẵn

Một cách làm khác đó là chúng ta sẽ dùng chuỗi để xử lý. Với cách này thì số nguyên dương ta nhập có thể mang giá trị rất lớn mà kiểu int,long… cũng không thể lưu được. Ý tưởng về cách làm thì cũng như trên, đó là duyệt từng chữ số nếu gặp chữ số chẵn thì ta return false. Nếu trong chuỗi không có chữ số lẻ ( tức là toàn số chẵn ) thì ta trả về true.

Bây giờ bạn đang thắc mắc là làm sao có thể kiểm tra chữ số đó là chẵn hay lẻ phải không, ta sẽ có 2 cách làm:

  • Các bạn có thể dùng if else nếu chữ số đó thuộc { ‘1’, ‘3’, ‘5’, ‘7’, ‘9’ } thì đó là chữ số lẻ và ngược lại.
  • Bạn có thể chuyển kí tự ‘1’ về số 1 bằng cách lấy kí tự ‘1’ – 48. Vì sao lại là 48 ư ? Vì 48 là mã của kí tự ‘0’. Tương tự cho các số khác.

Nếu bạn chưa biết cách nhập chuỗi trong c++ thì có thể xem lại tại đây.

Code tham khảo:

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#include

#include

#include

using namespace std;

bool check(char *s) {

    int length = 0;

    while (s[length] != '\0') length++;

    length--;

    for (int i = 0; i < length; i++) {

        int temp = s[i] - 48;

        if (temp % 2 == 1)

            return false;

    }

    return true;

}

int main()

{

    char *number = new char[100];

    cout << "Nhap so nguyen duong: ";

    fflush(stdin);

    fgets(number,100,stdin);

    if (check(number) == true)

        cout << "YES";

    else

        cout << "NO";

    return 0;

}

Nhap so nguyen duong: 2222222222222222222222222222222222223

NO

Bài viết mình đến đây là kết thúc. Cám ơn các bạn đã theo dõi !