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 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.