Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนองค์ประกอบระหว่างสองค่าที่กำหนดในอาร์เรย์ใน C++

เราได้รับอาร์เรย์ของจำนวนเต็มและค่าสองค่า start และ end งานคือการนับจำนวนองค์ประกอบที่อยู่ระหว่าง start และ end ในอาร์เรย์ โดยพิจารณาตำแหน่งการปรากฏครั้งแรกของ start และครั้งสุดท้ายของ end

ตัวอย่าง

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

คำอธิบาย − ช่วง 1 ถึง 7 มีองค์ประกอบอยู่ระหว่างกัน 5 ตัว (2,3,4,5,6)

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

คำอธิบาย − ไม่พบค่า 9 ในอาร์เรย์ จึงนับได้ 0

แนวทางการแก้ปัญหา

  • รับอาร์เรย์และค่า start, end
  • หาตำแหน่งแรกของ start (ลูปจากหน้าไปหลัง)
  • หาตำแหน่งสุดท้ายของ end (ลูปจากหลังมาหน้า)
  • คำนวณจำนวนองค์ประกอบระหว่างกัน: j - i - 1
  • จัดการกรณีไม่พบค่า หรือตำแหน่งไม่ถูกต้อง

ตัวอย่างโค้ด 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;
}

ผลลัพธ์

count is 4

บทความนี้อธิบายวิธีนับจำนวนสมาชิกที่อยู่ระหว่างค่า start และ end ในอาร์เรย์ โดยคำนึงถึงตำแหน่งการปรากฏครั้งแรกและครั้งสุดท้าย