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
2468
- Output
YES
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:
#include <iostream> #include<math.h> 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:
#include <iostream> #include<string.h> #include<math.h> using namespace std; bool check(char *s) { int length = 0; while (s[length] != ' ') 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 !
Để lại một bình luận