Bài toán: Hãy tìm giá trị thỏa điều kiện toàn chữ số lẻ và là giá trị lớn nhất thỏa điều kiện ấy trong mảng một chiều các số nguyên (nếu mảng không có giá trị thỏa điều kiện trên thì hàm trả về giá trị 0).
- Input
12 13 53 153
- Output
153
Tìm hiểu bài toán tìm giá trị có toàn chữ số lẻ lớn nhất trong mảng
Kiểm tra giá trị có toàn chữ số lẻ
Một giá trị được gọi là toàn chữ số lẻ khi các chữ số của nó không có chữ số chẵn nào. Ví dụ như các số: 1, 135, 751…
Để kiểm tra xem giá trị đó có toàn số lẻ hay không thì ta phải lấy từng chữ số của nó ra để so sánh. Ví dụ số 35 gồm hai chữ số là 3, 5 đều là các chữ số lẻ.
Xây dựng hàm kiểm tra
Ta sẽ sử dụng một vòng lặp do while để tiến hành lấy các chữ số của số nguyên n ra. Nếu gặp một chữ số chẵn thì ta sẽ trả về giá trị là false cho hàm isCheck
. Ngược lại, nếu lấy tất cả các chữ số ra mà vẫn không gặp chữ số chẵn (toàn chữ số lẻ ) thì ta trả về giá trị true.
bool isCheck(int number) { int temp; do { temp = number % 10; number /= 10; if (temp % 2 == 0) return false; } while (number > 0); return true; }
Hướng dẫn giải bài toán
Bây giờ ta đã có hàm isCheck dùng để kiểm tra một số có toàn giá trị lẻ hay không. Nhiệm vụ giờ chỉ cần xây dựng một hàm fun để tìm giá trị lớn nhất có toàn chữ số lẻ.
Xây dựng hàm tìm giá trị lớn nhất có toàn chữ số lẻ
Đầu tiên ta khởi tạo giá trị max bằng 0. Sau đó duyệt tất cả mảng để tìm giá trị lớn nhất có các chữ số đều là số lẻ. Nếu giá trị nào thỏa mãn điểu kiện sau
a[i] > max && isCheck(a[i])
thì ta gắn giá trị a[i] cho biến max. Kết thúc hàm ta sẽ trả về giá trị max. Nếu hàm trả về giá trị 0 tức là mảng không có giá trị nào có toàn chữ số lẻ.
int fun(int a[], int n) { int max = 0; for (int i = 0; i < n; i++) { if (a[i] > max && isCheck(a[i])) max = a[i]; } return max; }
Full code chương trình
#include <iostream> using namespace std; bool isCheck(int number) { int temp; do { temp = number % 10; number /= 10; if (temp % 2 == 0) return false; } while (number > 0); return true; } int fun(int a[], int n) { int max = 0; for (int i = 0; i < n; i++) { if (a[i] > max && isCheck(a[i])) max = a[i]; } return max; } void nhap(int a[], int n) { for (int i = 0; i < n; i++) { cout << "Nhap a[" << i << "]: "; cin >> a[i]; } cout << endl; } int main() { int a[100], n; cout << "Nhap n: "; cin >> n; nhap(a, n); if (fun(a, n) == 0) cout << "Mang khong co gia tri toan chu so le!"; else cout << fun(a, n); return 0; }
Nhap n: 3 Nhap a[0]: 1 Nhap a[1]: 15 Nhap a[2]: 53 53
Bài viết mình xin kết thúc tại đây. Cám ơn các bạn đã theo dõi !
Để lại một bình luận