Bài tập  /  Bài đang cần trả lời

Tìm số lượng cực tiểu địa phương

Help me (ngôn ngữ lập trình c++)

Câu 9. Cho dãy số a1, a2, aN (2<=N<=10°, |aj| <= 10. Tìm số lượng cực tiểu địa phương. ai được gọi là cực tiểu địa phương nếu:

+Nếui=1 thì a[1]<a[2];

+Nếui=N thì a[N]<a[N-1]

+ Ngược lại của 2 điều kiện trên thì a[i-1]>a[i] <a[i+1]

Câu 10. Tương tự câu 9, in ra các vị trị của cực đại địa phương theo thứ tự tăng dần nếu có.

1 trả lời
Hỏi chi tiết
445
0
0
Đức Anh Trần
10/08/2023 02:29:57
+5đ tặng

Câu 9. Để tìm số lượng cực tiểu địa phương của một dãy số, bạn có thể sử dụng một vòng lặp for để duyệt qua các phần tử của dãy và kiểm tra điều kiện của cực tiểu địa phương. Nếu một phần tử thỏa mãn điều kiện, bạn có thể tăng biến đếm lên một đơn vị. Sau khi kết thúc vòng lặp, bạn có thể in ra giá trị của biến đếm. 

#include <iostream>
using namespace std;

int main() {
  int n; // số lượng phần tử của dãy
  cin >> n;
  int a[n]; // mảng chứa các phần tử của dãy
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int count = 0; // biến đếm số lượng cực tiểu địa phương
  for (int i = 0; i < n; i++) {
    if (i == 0 && a[i] < a[i + 1]) { // kiểm tra điều kiện cho phần tử đầu tiên
      count++;
    }
    else if (i == n - 1 && a[i] < a[i - 1]) { // kiểm tra điều kiện cho phần tử cuối cùng
      count++;
    }
    else if (i > 0 && i < n - 1 && a[i - 1] > a[i] && a[i] < a[i + 1]) { // kiểm tra điều kiện cho các phần tử còn lại
      count++;
    }
  }
  cout << "Số lượng cực tiểu địa phương là: " << count << endl;
  return 0;
}
 

Câu 10. Để in ra các vị trí của cực đại địa phương theo thứ tự tăng dần, bạn có thể sử dụng một vòng lặp for tương tự như câu trước, nhưng thay vì kiểm tra điều kiện của cực tiểu địa phương, bạn sẽ kiểm tra điều kiện của cực đại địa phương. Nếu một phần tử thỏa mãn điều kiện, bạn có thể in ra chỉ số của nó (tính từ 1) và một khoảng trắng. 

#include <iostream>
using namespace std;

int main() {
  int n; // số lượng phần tử của dãy
  cin >> n;
  int a[n]; // mảng chứa các phần tử của dãy
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  cout << "Các vị trí của cực đại địa phương theo thứ tự tăng dần là: ";
  for (int i = 0; i < n; i++) {
    if (i == 0 && a[i] > a[i + 1]) { // kiểm tra điều kiện cho phần tử đầu tiên
      cout << i + 1 << " ";
    }
    else if (i == n - 1 && a[i] > a[i - 1]) { // kiểm tra điều kiện cho phần tử cuối cùng
      cout << i + 1 << " ";
    }
    else if (i > 0 && i < n - 1 && a[i - 1] < a[i] && a[i] > a[i + 1]) { // kiểm tra điều kiện cho các phần tử còn lại
      cout << i + 1 << " ";
    }
  }
  cout << endl;
  return 0;
}
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm
Bài tập liên quan

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Gia sư Lazi Gia sư
×
Trợ lý ảo Trợ lý ảo