C++中计算数组元素平均数与给定数字的出现次数


给定一个包含整型元素的数组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

解释

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 ]

下面程序中使用的方案如下

在这种方法中,我们将创建一个map用于存储平均值及其在原始数组中的计数。我们将这些计数添加到一个单独的数组中以打印出现次数。

  • 取一个整型数组arr[]。

  • 取整数输入num。

  • 函数occurrence_average(int arr[], int size, int num)接受输入数组和num,并打印arr[]中平均值的出现次数数组。它返回非零出现次数。

  • 取初始计数count=0。

  • 取一个map<int,int> map_pair来存储arr[]中唯一数字的计数。

  • 取一个数组total[]用于存储每个平均值的计数。

  • 使用for循环遍历数组arr[],从索引i=0到i<size。对于每个元素,使用map_pair[arr[i]]++递增对应键的值。

  • 循环结束时,我们有唯一数字作为键,以及它们在arr[]中的计数作为值。

  • 再次使用for循环遍历数组,计算num与每个单个元素的平均值并存储在temp中。

  • 如果使用map_pair.find(temp) != map_pair.end()在map_pair中找到该temp,则将其添加到数组total中。

  • 打印数组total,显示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

更新于:2021年1月5日

113 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告