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

นับจำนวนการเกิดขึ้นของค่าเฉลี่ยขององค์ประกอบอาร์เรย์ด้วยตัวเลขที่กำหนดใน C++


กำหนดอาร์เรย์ arr[] ที่มีองค์ประกอบจำนวนเต็มและจำนวนเต็ม เป้าหมายคือการหาค่าเฉลี่ยของแต่ละองค์ประกอบ arr[i] และ num แล้วพิมพ์จำนวนครั้งที่ค่าเฉลี่ยปรากฏในอาร์เรย์ดั้งเดิม

ถ้า array 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

คำอธิบาย

The num is 4 and averages with all other numbers in arr[] is :
[ 1, 4, 3, 2, 4, 3 ] occurrences of these in arr[]= [ 1, 2, 1, 0, 2, 1 ]

อินพุต

arr[] = { 4, 8, 24, 16, 20, 40 } num=4

ผลลัพธ์

1 0 0 0 0 0

จำนวนครั้งของค่าเฉลี่ยขององค์ประกอบอาร์เรย์ด้วยจำนวนที่กำหนดคือ − 1

คำอธิบาย

The num is 4 and averages with all other numbers in arr[] is :
[ 4, 6, 14, 10, 12, 22 ] occurrences of these in arr[]= [ 1, 0, 0, 0, 0, 0 ]

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

ในแนวทางนี้ เราจะสร้างแผนที่สำหรับจัดเก็บค่าเฉลี่ยและจำนวนในอาร์เรย์ดั้งเดิม เราจะเพิ่มการนับเหล่านี้ไปยังอาร์เรย์แยกต่างหากเพื่อพิมพ์จำนวนครั้งที่เกิดขึ้น

  • ใช้ arr[] ของประเภทจำนวนเต็ม

  • รับอินพุตเป็นจำนวนเต็ม

  • ฟังก์ชัน beginning_average(int arr[], int size, int num) รับอาร์เรย์อินพุตและ num และพิมพ์อาร์เรย์การเกิดขึ้นของค่าเฉลี่ยใน arr[] ส่งกลับจำนวนการเกิดขึ้นที่ไม่ใช่ศูนย์

  • นับตั้งต้น=0

  • ใช้ map map_pair เพื่อเก็บจำนวนตัวเลขที่ไม่ซ้ำใน arr[].

  • หาผลรวมอาร์เรย์[]เพื่อเก็บการนับของแต่ละค่าเฉลี่ย

  • สำรวจอาร์เรย์ arr[] โดยใช้ for loop fromindex i=0 ถึง i

  • ในตอนท้ายของลูป เรามีตัวเลขที่ไม่ซ้ำกันเป็นคีย์และนับเป็น arr[] เป็นค่า

  • สำรวจอาร์เรย์อีกครั้งโดยใช้ for loop เพื่อคำนวณค่าเฉลี่ยของ num กับแต่ละองค์ประกอบและเก็บในอุณหภูมิ

  • หากพบ temp นั้นใน map_pair โดยใช้ map_pair.find(temp) !=map_pair.end() ให้เพิ่มไปยังผลรวมของอาร์เรย์

  • พิมพ์ผลรวมอาร์เรย์สำหรับการนับค่าเฉลี่ยที่เกิดขึ้นใน arr[] สำหรับแต่ละองค์ประกอบที่ไม่ใช่ศูนย์ ให้นับการเพิ่มขึ้น

  • ผลตอบแทนนับเป็นผลลัพธ์

ตัวอย่าง

#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<<"Count of occurrences of the average of array elements with a given
      number are: "<<occurrence_average(arr, size, num);
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

Count of occurrences of the average of array elements with a given number are:
1 0 0 0 0 0 1