Dưới đây là một đoạn mã C++ để thực hiện yêu cầu của bạn. Chương trình này sẽ đọc số nguyên `n` và dãy số `n` số hạng, rồi in ra các số nằm trong khoảng `[min + 1; max - 1]`.
```cpp
#include
#include
#include
int main() {
int n;
std::cout << "Nhập vào số nguyên n: ";
std::cin >> n;
std::vector numbers(n);
std::cout << "Nhập vào dãy số có " << n << " số hạng: ";
for (int i = 0; i < n; ++i) {
std::cin >> numbers[i];
}
// Tìm số nhỏ nhất và số lớn nhất
int min_num = *std::min_element(numbers.begin(), numbers.end());
int max_num = *std::max_element(numbers.begin(), numbers.end());
// In ra các số nằm trong khoảng [min + 1; max - 1]
std::cout << "Các số nằm trong khoảng [" << min_num + 1 << "; " << max_num - 1 << "] là: ";
for (int num : numbers) {
if (num > min_num && num < max_num) {
std::cout << num << " ";
}
}
std::cout << std::endl;
return 0;
}
```
### Giải thích mã chương trình:
1. **Nhập dữ liệu**: Chương trình bắt đầu bằng cách đọc giá trị `n` và `dãy số` từ người dùng.
2. **Tìm min và max**: Sử dụng hàm `std::min_element` và `std::max_element` để tìm số nhỏ nhất (`min_num`) và số lớn nhất (`max_num`) trong dãy.
3. **In kết quả**: Chương trình tiếp tục kiểm tra từng số trong dãy và in ra các số nằm trong khoảng `[min + 1; max - 1]`.
### Ví dụ:
Nếu bạn nhập:
```
5
6 30 2 5 1
```
Chương trình sẽ in ra:
```
Các số nằm trong khoảng [2; 29] là: 6 5 2
```
Hy vọng đoạn mã này giúp ích cho bạn!