Bài toán: Hãy liệt kê các vị trí chẵn lớn nhất trong mảng một chiều các số nguyên.
- Input:
3 5 6 6 5
- Output:
Cac vi tri la: 3 4
Cách liệt kê các vị trí chẵn lớn nhất trong mảng một chiều
Cách làm là chúng ta sẽ tìm ra phần tử max
là giá trị chẵn lớn nhất. Sau đó dùng một mảng phụ để đánh dấu các vị trí có giá trị bằng max
.
Để liệt kê các vị trí chẵn lớn nhất trong mảng thì ta thực hiện như sau:
- Tìm được phần tử chẵn lớn nhất trong mảng.
- Dùng một mảng phụ để đánh dấu vị trí của các vị trí chẵn lớn nhất trong mảng.
- Cuối cùng ta tiến hành in ra màn hình các vi trí đã được đánh dấu.
Xây dựng hàm nhập mảng
void nhap(int a[], int n) { for (int i = 0; i < n; i++) { cout << "Nhap phan tu a[" << i << "]: "; cin >> a[i]; } }
Hàm trên chúng ta cần truyền hai tham số đó là: tên mảng và số lượng phần tử của mảng. Kiểu trả về của hàm nhap
phải là void vì hàm trên không trả về gì cả.
Xây dựng hàm tìm số chẵn lớn nhất
const int IFN = 10000; int number(int a[], int n) { int max = -IFN; for (int i = 0; i < n; i++) if (a[i] > max && max % 2 == 0) max = a[i]; return max; }
Đầu tiên ta khởi tạo giá trị max
thật nhỏ, sau đó 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 vừa là số chẵn vừa lớn hơn giá trị max
thì ta gán giá trị đó cho max. Nếu trong mảng không có một số chẵn nào hết thì hàm trên sẽ trả về giá trị -IFN
.
Code tham khảo:
#include <iostream> #include<string> using namespace std; const int IFN = 10000; int number(int a[], int n) { int max = -IFN; for (int i = 0; i < n; i++) if (a[i] > max && a[i] % 2 == 0) max = a[i]; return max; } void nhap(int a[], int n) { for (int i = 0; i < n; i++) { cout << "Nhap phan tu a[" << i << "]: "; cin >> a[i]; } } int main() { int n; int a[100]; cout << "Nhap n: "; cin >> n; nhap(a, n); int max = number(a, n); if (max == -IFN) cout << "Mang khong co phan tu chan"; else { int b[100]; for (int i = 0; i < n; i++) if (a[i] == max) b[i] = 1; else b[i] = 0; for (int i = 0; i < n; i++) if (b[i] == 1) cout << i+1<<" "; } }
Sau khi chạy chúng ta sẽ có kết quả sau
Nhap n: 3 Nhap phan tu a[0]: 3 Nhap phan tu a[1]: 4 Nhap phan tu a[2]: 6 3
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