একটি অ্যারে দেওয়া আছে এবং কাজ হল C++-এ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL) ব্যবহার করে অ্যারেতে বিজোড় এবং জোড় উপাদানগুলোর সংখ্যা বের করা।
এই সমস্যা সমাধানের জন্য আমরা C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরিতে উপস্থিত count_if() ফাংশনটি ব্যবহার করছি। count_if() ফাংশন কী?
সিনট্যাক্স
count_if(LowerBound, UpperBound, function)
বিবরণ − এই ফাংশনটি অ্যারেতে কতগুলো উপাদান দেওয়া শর্তকে স্যাটিসফাই করে সেটি রিটার্ন করে। এটি তিনটি প্যারামিটার নেয়।
- Lower Bound − এটি অ্যারে বা অন্য যেকোনো সিকোয়েন্সের প্রথম উপাদানকে নির্দেশ করে।
- Upper Bound − এটি অ্যারে বা অন্য যেকোনো সিকোয়েন্সের শেষ উপাদানকে নির্দেশ করে।
- Function − এটি নির্দিষ্ট শর্তের ভিত্তিতে বুলিয়ান ভ্যালু রিটার্ন করে।
উদাহরণ
Input-: array[] = {2, 4, 1, 5, 8, 9} Output-: বিজোড় উপাদানগুলো: 1, 5 এবং 9। তাই মোট বিজোড়ের সংখ্যা ৩ জোড় উপাদানগুলো: 2, 4 এবং 8 Input-: array[] = {1, 2, 3, 4, 5, 10} Output-: বিজোড় উপাদানগুলো: 1, 3 এবং 5। তাই মোট বিজোড়ের সংখ্যা ৩ জোড় উপাদানগুলো: 2, 4 এবং 10। তাই মোট জোড়ের সংখ্যা ৩
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি −
- ইন্টিজার টাইপের অ্যারেতে ইন্টিজার ভ্যালুগুলো ইনপুট নিন
- বুল ফাংশন তৈরি করুন যা চেক করবে অ্যারেতে উপাদানটি বিজোড় কিনা। যদি নির্বাচিত উপাদানগুলো বিজোড় হয় তবে বাকি উপাদানগুলো জোড় হবে।
- 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