Để giải quyết bài toán này, chúng ta có thể sử dụng vòng lặp để duyệt qua từng phần tử trong dãy số và kiểm tra xem phần tử đó có phải là số chính phương hay không. Nếu là số chính phương, ta in ra phần tử đó và cập nhật tích tích các số chính phương.
Dưới đây là code mẫu để giải quyết bài toán này:
```
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n;
cout << "Nhap so phan tu cua day: ";
cin >> n;
int a[n]; cout << "Nhap cac phan tu cua day: "; for (int i = 0; i < n; i++) { cin >> a[i]; } int tich = 1; cout << "Cac so chinh phuong trong day la: "; for (int i = 0; i < n; i++) { if (sqrt(a[i]) == floor(sqrt(a[i]))) { cout << a[i] << " "; tich *= a[i]; } } cout << endl << "Tich cac so chinh phuong la: " << tich; return 0;
}
```
Trong đoạn code trên, chúng ta sử dụng hàm `sqrt()` để tính căn bậc hai của mỗi phần tử trong dãy số. Nếu kết quả là một số nguyên, tức là phần tử đó là số chính phương, ta in ra và cập nhật tích.