Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số lần xuất hiện trung bình của các phần tử mảng với một số nhất định trong C ++

Cho một mảng arr [] chứa các phần tử nguyên và một số nguyên. Mục đích là tìm giá trị trung bình của mỗi phần tử arr [i] và num và in ra số lần giá trị trung bình đó xuất hiện trong mảng ban đầu.

Nếu mảng arr [] là [5, 2, 3] và num là 2. Giá trị trung bình sẽ là [3, 2, 2] lần xuất hiện trong arr [] là [1,1,1]

Ví dụ

Đầu vào

arr[] = { 1, 6, 4, 3, 6, 4 } num=2

Đầu ra

1 2 1 0 2 1

Số lần xuất hiện trung bình của các phần tử mảng với một số cho trước là - 5

Giải thích

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 ]

Đầu vào

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

Đầu ra

1 0 0 0 0 0

Số lần xuất hiện trung bình của các phần tử mảng với một số cho trước là - 1

Giải thích

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 ]

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -

Trong cách tiếp cận này, chúng tôi sẽ tạo một bản đồ để lưu trữ các giá trị trung bình và số lượng của chúng trong mảng ban đầu. Chúng tôi sẽ thêm các số đếm này vào một mảng riêng biệt để in ra số lần xuất hiện.

  • Lấy arr [] kiểu số nguyên.

  • Lấy số đầu vào là số nguyên.

  • Hàm xuất hiện_average (int arr [], int size, int num) nhận mảng và số đầu vào và in ra mảng xuất hiện các giá trị trung bình trong arr []. Nó trả về số lần xuất hiện khác 0.

  • Lấy số lượng ban đầu =0.

  • Lấy một bản đồ map_pair để lưu trữ số lượng các số duy nhất trong arr [].

  • Lấy tổng mảng [] để lưu trữ số lượng của mỗi giá trị trung bình.

  • Duyệt qua mảng arr [] bằng vòng lặp for từ chỉ mục i =0 đến i

  • Ở cuối vòng lặp, chúng ta có các số duy nhất làm khóa và số lượng của chúng trong arr [] dưới dạng giá trị.

  • Duyệt lại mảng bằng vòng lặp for để tính trung bình của num với từng phần tử riêng lẻ và lưu trữ trong thời gian tạm thời.

  • Nếu tìm thấy tạm thời đó trong map_pair bằng cách sử dụng map_pair.find (temp)! =Map_pair.end (), thì hãy thêm nó vào tổng mảng.

  • In tổng mảng cho số lượng trung bình xảy ra trong arr []. Đối với mỗi phần tử khác 0, số gia tăng.

  • Kết quả là số lượt trả lại.

Ví dụ

#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);
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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