Bài toán: Hãy tìm giá trị đầu tiên trong mảng một chiều các số nguyên có chữ số đầu tiên là chữ số lẻ. Nếu trong mảng không tồn tại giá
trị như vậy thì hàm sẽ trả về giá trị 0
Ví dụ:
- Input
21 13 53 26
- Output
Gia tri thoa man bai toan la: 13
- Input
21 23 20 25 28
- Output
Khong ton tai gia tri thoa man bai toan
Ý tưởng tìm giá trị đầu tiên trong mảng có chữ số đầu tiên là chữ số lẻ
- Đầu tiên ta viết một hàm
check
để kiểm tra xem số nguyên a có bắt đầu bằng số lẻ không. Nếu bắt đầu bằng số lẻ thì ta trả về giá trị true, ngược lại thì trả về false. - Ta tiến hành duyệt từng phần tử của mảng nếu phần tử nào thỏa mãn tính chất bắt đầu bằng số lẻ thì ta trả về giá trị của phần tử đó và kết thúc hàm. Ngược lại nếu duyệt hết tất cả các phần tử của mảng mà vẫn không tìm được phần tử bắt đầu bằng số lẻ thì ta trả về giá trị 0.
for (int i = 0; i < n; i++) { if (check(a[i])) return a[i]; } return 0;
Xây dựng hàm kiểm tra chữ số đầu tiên là chữ số lẻ
- Đầu tiên ta lấy giá trị tuyệt đối của phần tử n đang xét.
- Ta tiến hành lấy từng chữ số của phần tử đó ra, đến khi lấy được chữ số đầu tiên thì dừng lại.
n = abs(n); while( n > 9){ n/=10; }
- Sau khi đã lấy được chữ số đầu tiên thì ta tiến hành kiểm tra, nếu nó là số lẻ thì trả về true, nếu chẵn thì trả về false.
Code tìm giá trị đầu tiên trong mảng có chữ số đầu tiên là chữ số lẻ
#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); while (n > 9) { n /= 9; } if (n % 2 == 1) return true; return false; } int Fun(int a[], int n) { for (int i = 0; i < n; i++) { if (check(a[i])) return a[i]; } return 0; } int main() { int a[100]; int n; cout << "Nhap vao n: "; cin >> n; NhapMang(a, n); if (Fun(a, n) == 0) cout << "Khong ton tai gia tri thoa man bai toan"; else cout << "Gia tri thoa man bai toan la: " << Fun(a, n); system("pause"); return 0; }
Sau khi chạy chương trình trên ta có kết quả sau :
Nhap vao n: 4 Nhap a[0]: 21 Nhap a[1]: 13 Nhap a[2]: 53 Nhap a[3]: 26 Gia tri thoa man bai toan la: 13
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