একটি অ্যারে arr[] দেওয়া আছে যাতে ইন্টিজার এলিমেন্ট আছে এবং একটি ইন্টিজার num। লক্ষ্য হলো প্রতিটি এলিমেন্ট arr[i] এবং num-এর গড় বের করে সেটি মূল অ্যারেতে কতবার এসেছে সেটি প্রিন্ট করা।
যদি অ্যারে arr[] = [5, 2, 3] এবং num = 2 হয়। গড়গুলো হবে [3, 2, 2] এবং arr[]-এ অকারেন্স [1,1,1]।
উদাহরণ ১
ইনপুট
arr[] = { 1, 6, 4, 3, 6, 4 } num=2
আউটপুট
1 2 1 0 2 1 অ্যারে এলিমেন্ট এবং একটি সংখ্যার গড়ের অকারেন্স সংখ্যা: 5
ব্যাখ্যা
num ৪ এবং arr[]-এর সকল সংখ্যার সাথে গড়: [1, 4, 3, 2, 4, 3] arr[]-এ অকারেন্স: [1, 2, 1, 0, 2, 1]
উদাহরণ ২
ইনপুট
arr[] = { 4, 8, 24, 16, 20, 40 } num=4
আউটপুট
1 0 0 0 0 0 অ্যারে এলিমেন্ট এবং একটি সংখ্যার গড়ের অকারেন্স সংখ্যা: 1
ব্যাখ্যা
num ৪ এবং arr[]-এর সকল সংখ্যার সাথে গড়: [4, 6, 14, 10, 12, 22] arr[]-এ অকারেন্স: [1, 0, 0, 0, 0, 0]
প্রয়োগ করা পদ্ধতি
এই পদ্ধতিতে একটি ম্যাপ তৈরি করা হয় গড় এবং তাদের মূল অ্যারেতে কাউন্ট সংরক্ষণের জন্য। এই কাউন্টগুলো আলাদা অ্যারেতে যোগ করা হয় প্রিন্ট করার জন্য।
ইন্টিজার টাইপের
arr[]নিন।ইনপুট
numইন্টিজার হিসেবে নিন।occurrence_average(int arr[], int size, int num)ফাংশনটি ইনপুট অ্যারে এবংnumনিয়ে গড়ের অকারেন্স অ্যারে প্রিন্ট করে। এটি নন-জিরো অকারেন্সের কাউন্ট রিটার্ন করে।আরম্ভিক কাউন্ট ০।
mapনিনmap_pair arr[]-এ ইউনিক সংখ্যাগুলোর কাউন্ট রাখার জন্য।total[]অ্যারে নিন প্রতিটি গড়ের কাউন্ট রাখার জন্য।forলুপ দিয়েi=0থেকেiপর্যন্ত arr[]ট্রুভার্স করুন। প্রতিটি এলিমেন্টের জন্যmap_pair[arr[i]]++দিয়ে ভ্যালু বাড়ান।লুপ শেষে ইউনিক সংখ্যাগুলো কি হিসেবে এবং তাদের কাউন্ট ভ্যালু হিসেবে থাকবে।
আরেকবার অ্যারে ট্রুভার্স করুন
forলুপ দিয়েnum-এর সাথে প্রতিটি এলিমেন্টের গড় ক্যালকুলেট করেtemp-এ রাখুন।যদি সেটি
map_pair-এ পাওয়া যায় (map_pair.find(temp) != map_pair.end()), তবেtotalঅ্যারেতে যোগ করুন।totalঅ্যারে প্রিন্ট করুন গড়ের অকারেন্স কাউন্টের জন্য। প্রতিটি নন-জিরো এলিমেন্টের জন্য কাউন্ট বাড়ান।কাউন্ট রিটার্ন করুন ফলাফল হিসেবে।
উদাহরণ কোড
#include<bits/stdc++.h>
using namespace std;
int occurrence_average(int arr[], int size, int num) {
int count = 0;
map<int,int> map_pair;
int total[size] = {0};
int val, av;
for (int i = 0; i < size; i++) {
if (map_pair[arr[i]] == 0) {
map_pair[arr[i]] = 1;
} else {
map_pair[arr[i]]++;
}
}
for (int i = 0; i < size; i++) {
int temp = int((arr[i] + num) / 2);
if(map_pair.find(temp) != map_pair.end()) {
int set = map_pair[temp];
total[i] = set;
}
}
cout << endl;
for(int i=0; i 0) {
count++;
}
}
return count;
}
int main() {
int arr[] = { 4, 8, 24, 16, 20, 40 };
int size = sizeof(arr)/sizeof(arr[0]);
int num = 4;
cout << endl << "অ্যারে এলিমেন্ট এবং একটি সংখ্যার গড়ের অকারেন্স সংখ্যা: " << occurrence_average(arr, size, num);
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
অ্যারে এলিমেন্ট এবং একটি সংখ্যার গড়ের অকারেন্স সংখ্যা: 1 0 0 0 0 0 1