hello mọi người, em đang có một bài tập để thực hành về mảng trong c++, đề bài là in ra đoạn con trong mảng có nhiều số hạng dương liên tiếp nhất (nếu có nhiều đoạn có số hạng dương liên tiếp nhiều nhất bằng nhau thì in ra số đoạn và lần lượt các đoạn đó), và em đang khá bế tắc trong phần
tìm số đoạn có số dương liên tiếp nhiều nhất bằng nhau, đoạn code bên dưới em có biến max lưu trữ số số hạng dương liên tiếp nhiều nhất trong đoạn để tạo thêm biến max1, khi chạy lại toàn bộ phần tử trong mảng, mỗi khi giá trị max1 bằng với max nghĩa là khi đó đạt giá trị số phần tử dương liên tiếp nhiều nhất, biết arrCount sẽ tăng thêm 1 để nó tương ứng với số đoạn con cần tìm. nhưng em không rõ tại sao kết quả của biến arrCount vẫn sai so với các input thực tế, và đoạn tìm số đoạn con em thấy là cách này nó khá là ngu ngu
mà em không biết làm cách nào nữa, mọi người gợi ý giúp em một số cách được không ạ, em cảm ơn
#include <iostream>
using namespace std;
int main() {
int n;
cout << "Nhap so phan tu cua mang: ";
cin >> n;
int arr[n];
cout << "Nhap cac phan tu cua mang: " << endl;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
int count = 0;
int max = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > 0) {
count++;
if (count > max) {
max = count;
}
}
if (arr[i] < 0) {
count = 0;
}
}
int arrCount = 1;
int max1 = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > 0) {
count++;
if (max1 < count) {
max1 = count;
}
if (max1 == max) {
arrCount++;
}
}
if (arr[i] < 0) {
count = 0;
}
}
cout << arrCount;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?