Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số phần tử giữa hai giá trị cho trước trong mảng C++

Cho một mảng số nguyên và hai giá trị start, end. Nhiệm vụ là đếm số phần tử nằm giữa lần xuất hiện đầu tiên của start và lần xuất hiện cuối cùng của end trong mảng.

Ví dụ

Input - arr[] = {1, 2, 3, 4, 5, 6, 7}, Start = 1, End = 7 Output - count is 5

Giải thích - Giữa 1 (vị trí 0) và 7 (vị trí 6) có 5 phần tử.

Input - arr[] = {1, 2, 3, 4, 5, 6, 7}, Start = 7, End = 9 Output - count is 0

Giải thích - 9 không có trong mảng, trả về 0.

Phương pháp tiếp cận

  • Tìm chỉ số đầu tiên của start (duyệt từ trái sang phải)
  • Tìm chỉ số cuối cùng của end (duyệt từ phải sang trái, bắt đầu sau vị trí start)
  • Nếu không tìm thấy một trong hai hoặc vị trí không hợp lệ, trả về 0
  • Kết quả = j - i - 1

Ví dụ code C++

#include <iostream>
using namespace std;

int countelements(int ar[], int n, int start, int end) {
    int i = 0;
    for (i = 0; i < n; i++) {
        if (ar[i] == start) break;
    }
    if (i >= n - 1) return 0;

    int j;
    for (j = n - 1; j >= i + 1; j--) {
        if (ar[j] == end) break;
    }
    if (j == i) return 0;

    return (j - i - 1);
}

int main() {
    int ar[] = {1, 6, 2, 5, 9, 8, 3, 7, 4};
    int n = sizeof(ar) / sizeof(ar[0]);
    int start = 5, end = 4;
    cout << "count is " << countelements(ar, n, start, end);
    return 0;
}

Kết quả

count is 4