समस्या विवरण
एक सरणी 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 4 है और 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 4 है और 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लेता है औरarr[]में औसत की घटना सरणी प्रिंट करता है। यह गैर-शून्य घटनाओं की गिनती लौटाता है। - प्रारंभिक गिनती=0 लें।
arr[]में अद्वितीय संख्याओं की गिनती संग्रहीत करने के लिएmap<int,int> map_pairलें।- प्रत्येक औसत की गिनती संग्रहीत करने के लिए सरणी
total[]लें। forलूप का उपयोग करके इंडेक्सi=0सेi<sizeतक सरणीarr[]को पार करें। प्रत्येक तत्व के लिएmap_pair[arr[i]]++का उपयोग करके संबंधित कुंजी के लिए मान बढ़ाएं।- लूप के अंत में हमारे पास कुंजी के रूप में अद्वितीय संख्याएं और
arr[]में उनकी गिनती मान के रूप में होगी। forलूप का उपयोग करके सरणी को फिर से पार करें ताकिnumका प्रत्येक व्यक्तिगत तत्व के साथ औसत निकालें औरtempमें संग्रहीत करें।- यदि वह
tempmap_pair.find(temp) != map_pair.end()का उपयोग करकेmap_pairमें मिलता है, तो इसे सरणीtotalमें जोड़ें। - गिनती के लिए सरणी
totalप्रिंट करें। प्रत्येक गैर-शून्य तत्व के लिए गिनती बढ़ाएं। - परिणाम के रूप में गिनती लौटाएं।
C++ कोड उदाहरण
#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<size; i++) {
cout << total[i] << " ";
if(total[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