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

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

บทนำ

ได้รับอาร์เรย์มา ภารกิจคือหาจำนวนองค์ประกอบที่เป็นเลขคี่และเลขคู่ในอาร์เรย์โดยใช้ 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