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

หาองค์ประกอบในอาร์เรย์ที่หารด้วย N ลงตัวด้วย STL ใน C++

บทนำ

ได้รับอาร์เรย์มา ภารกิจคือหาจำนวนองค์ประกอบที่หารด้วย N ลงตัวโดยใช้ Standard Template Library (STL) ใน C++

เราใช้ฟังก์ชัน count_if() ใน C++ STL

Syntax

count_if(LowerBound, UpperBound, function)

คำอธิบาย - ฟังก์ชันนี้คืนค่าจำนวนองค์ประกอบที่ตรงตามเงื่อนไข รับ 3 พารามิเตอร์:

  • Lower Bound - ชี้ไปองค์ประกอบแรก
  • Upper Bound - ชี้ไปองค์ประกอบสุดท้าย
  • Function - คืนค่า Boolean ตามเงื่อนไข

ตัวอย่าง

Input: array[] = {2, 4, 1, 5, 8, 9}, N = 4
Output: Elements divisible by 4: 2 (คือ 4 และ 8)

Input: array[] = {1, 2, 3, 4, 5, 10}, N = 2
Output: Elements divisible by 2: 3 (คือ 2, 4, 10)

แนวทางในโปรแกรม -

  • รับค่าจำนวนเต็มในอาร์เรย์
  • สร้างฟังก์ชัน bool ตรวจสอบว่าหารด้วย N ลงตัวหรือไม่
  • เรียก count_if() พร้อมพารามิเตอร์ ตัวแรก ตัวสุดท้าย และฟังก์ชันตรวจสอบ

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

int n;

// ฟังก์ชันตรวจสอบหารลงตัว
bool check(int i) {
    if (i % n == 0)
        return true;
    else
        return false;
}

int main() {
    int arr[] = {2, 4, 1, 5, 8, 9};
    n = 4;
    int size = sizeof(arr) / sizeof(arr[0]);
    int temp = count_if(arr, arr + size, check);
    cout << "Elements divisible by " << n << ": " << temp;
    return 0;
}

ผลลัพธ์

Elements divisible by 4: 2

คำอธิบายเพิ่มเติม

ตัวแปร n ประกาศเป็น global เพื่อให้ฟังก์ชัน check() เข้าถึงได้ (เพราะ count_if ไม่รองรับการส่งพารามิเตอร์เพิ่มเติมให้ predicate โดยตรง ใน C++11 ขึ้นไปแนะนำให้ใช้ Lambda Function แทน)