บทนำ
ได้รับอาร์เรย์มา ภารกิจคือหาจำนวนองค์ประกอบที่เป็นเลขคี่และเลขคู่ในอาร์เรย์โดยใช้ 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}
Output: Odd elements: 1, 5, 9 → จำนวน 3 ตัว
Even elements: 2, 4, 8 → จำนวน 3 ตัว
Input: array[] = {1, 2, 3, 4, 5, 10}
Output: Odd elements: 1, 3, 5 → จำนวน 3 ตัว
Even elements: 2, 4, 10 → จำนวน 3 ตัว
แนวทางที่ใช้ในโปรแกรม -
- รับค่าจำนวนเต็มเข้าไปในอาร์เรย์แบบจำนวนเต็ม
- สร้างฟังก์ชัน bool เพื่อตรวจสอบว่าองค์ประกอบเป็นคี่หรือไม่ ถ้าคี่ที่เหลือจะเป็นคู่
- เรียกฟังก์ชัน count_if() ซึ่งรับพารามิเตอร์: ตัวแรก ตัวสุดท้าย และฟังก์ชันตรวจสอบ
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
// ฟังก์ชันตรวจสอบเลขคี่หรือคู่
bool check(int i) {
if (i % 2 != 0)
return true;
else
return false;
}
int main() {
int arr[] = { 2, 10, 1, 3, 7, 4, 9 };
int size = sizeof(arr) / sizeof(arr[0]);
int temp = count_if(arr, arr + size, check);
cout << "Odds are : " << temp << endl;
cout << "Evens are : " << (size - temp) << endl;
return 0;
}
ผลลัพธ์
Odds are: 4 Evens are: 3
คำอธิบายเพิ่มเติม
ฟังก์ชัน count_if อยู่ใน header <algorithm> (ซึ่งรวมอยู่ใน <bits/stdc++.h>) ฟังก์ชัน predicate (check) ต้องรับพารามิเตอร์ 1 ตัวและคืนค่า bool