Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 숫자를 가진 배열 요소의 평균 발생 횟수 계산

<시간/>

정수 요소와 정수 num을 포함하는 배열 arr[]이 제공됩니다. 목표는 각 요소 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 ]

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다. -

이 접근 방식에서 우리는 평균과 그 개수를 원래 배열에 저장하기 위한 맵을 생성할 것입니다. 이 카운트를 별도의 배열에 추가하여 발생 횟수를 인쇄합니다.

  • 정수 유형의 arr[]을 가져옵니다.

  • 입력 num을 정수로 사용합니다.

  • invoke_average(int arr[], int size, int num) 함수는 입력 배열과 num을 받아 arr[]에 평균의 발생 배열을 인쇄합니다. 0이 아닌 발생 횟수를 반환합니다.

  • 초기 카운트=0을 취합니다.

  • map map_pair를 사용하여 arr[]에 고유한 숫자의 개수를 저장합니다.

  • 각 평균의 개수를 저장하기 위해 배열 total[]을 사용합니다.

  • for 루프 fromindex i=0을 i

  • 루프의 끝에서 고유한 숫자를 키로 사용하고 그 개수를 arr[]에 값으로 사용합니다.

  • for 루프를 사용하여 배열을 다시 탐색하여 각 개별 요소로 num의 평균을 계산하고 temp에 저장합니다.

  • map_pair.find(temp) !=map_pair.end()를 사용하여 map_pair에서 해당 temp를 찾으면 배열 합계에 추가합니다.

  • arr[]에서 발생하는 평균 개수에 대한 배열 합계를 인쇄합니다. 0이 아닌 각 요소에 대해 카운트를 증가시킵니다.

  • 결과로 카운트를 반환합니다.

예시

#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