Bài toán: Hãy liệt kê các giá trị có toàn chữ số lẻ trong mảng một chiều các số nguyên. Nếu mảng không tồn tại phần tử chứa toàn số lẻ thì in ra màn hình dòng thông báo "Khong ton tai gia tri co toan chu so le"
.
Ý tưởng tìm giá trị có toàn chữ số lẻ trong mảng
- Đầu tiên ta viết một hàm
check
để kiểm tra số n có toàn chữ số lẻ hay không . Nếu giá trị n đang xét có toàn chữ số lẻ thì hàmcheck
sẽ trả về giá trị true, ngược lại thì trả về false. - Ta tiến hành duyệt tất cả các phần tử của mảng nếu phần tử nào thỏa mãn điều kiện có toàn chữ số lẻ thì ta in ra màn hình. Đồng thời cũng dùng một biến
count
để đếm các phần tử thỏa mãn. if( check(a[i]) ) { printf("%d" ,a[i]); count++; }
- Nếu sau khi duyệt hết mảng mà biến
count
vẫn không thay đổi giá trị tức là mảng không tồn tại giá trị có toàn chữ số lẻ. Ta tiến hành in dòng thông báo ra màn hình. if( count == 0 ) printf("Khong ton tai gia tri co toan chu so le");
Xây dựng hàm kiểm tra giá trị có toàn là chữ số lẻ
- Đầu tiên ta phải lấy giá trị tuyệt đối của số nguyên n đang xét.
- Ta tiến hành lấy từng chữ số của số nguyên n ra.
- Nếu ta gặp một chữ số chẵn thì trả về giá trị false ngay mà không cần xét tiếp nữa.
- Nếu sau khi lấy hết các chữ số của số nguyên n ra mà hàm vẫn không trả về giá trị false thì ta trả về giá trị true.
Code tham khảo
#include<iostream> #include<math.h> using namespace std; void NhapMang(int a[], int n) { for (int i = 0; i < n; i++) { cout << "Nhap a[" << i << "]: "; cin >> a[i]; } } bool check(int n) { n = abs(n); do { int temp = n % 10; if (n % 2 == 0) return false; n /= 10; } while (n > 0); return true; } void Fun(int a[], int n) { int count = 0; for (int i = 0; i < n; i++) { if (check(a[i])) { cout << a[i]<<" "; count++; } } if (count == 0) cout << "Khong ton tai gia tri co toan chu so le"; } int main() { int a[100]; int n; cout << "Nhap vao n: "; cin >> n; NhapMang(a, n); Fun(a, n); system("pause"); return 0; }
Sau khi chạy chương trình trên ta có kết quả.
Nhap vao n: 3 Nhap a[0]: 12 Nhap a[1]: 135 Nhap a[2]: 1 135 1
Bài viết đến đây là kết thúc. Cám ơn các bạn đã theo dõi !
Trả lời