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

C++에서 주어진 범위에 있는 요소의 합으로 합계 배열을 구성합니다.


정수와 홀수 합계만 포함하는 배열 arr[ ]이 제공됩니다. 목표는 arr_2[i]가 arr[]의 이전 합계/2개 요소 + arr[i] + 다음 합계/2개 요소의 합이 되도록 합계 배열 arr_2[ ]를 만드는 것입니다. 합계가 1이면 arr_2[i]=arr[i]

입력

arr[] = { 4, 1, 7, 5, 2, 9} sum=3

출력

Construction of sum-array with sum of elements in given range are: 5 12 13 14
16 17 17 9 3

설명

The sum array is constructed as:
arr_2[0]=arr[0]+arr[1] = 4+1 = 5
arr_2[1]=arr[0]+arr[1]+arr[2] = 4+1+7 = 12
arr_2[2]=arr[1]+arr[2]+arr[3] = 1+7+5 = 13
arr_2[3]=arr[2]+arr[3]+arr[4] = 7+5+2 = 14
arr_2[4]=arr[3]+arr[4]+arr[5] = 5+2+9 = 16
arr_2[5]=arr[4]+arr[5] = 2+9 = 11s

입력

arr[] = { 1,2,3,4,5 } sum=5

출력

Construction of sum-array with sum of elements in given range are − 6 10 15 14
12

설명

The sum array is constructed as:
arr_2[0]=arr[0]+arr[1]+arr[2] = 1+2+3 = 6
arr_2[1]=arr[0]+arr[1]+arr[2]+arr[3] = 1+2+3+4= 10
arr_2[2]=arr[0]+arr[1]+arr[2]+arr[3]+arr[4] = 1+2+3+4+5 = 15
arr_2[3]=arr[1]+arr[2]+arr[3]+arr[4] = 2+3+4+5= 14
arr_2[4]=arr[2]+arr[3]+arr[4]= 3+4+5 = 12

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

이 접근 방식에서는 슬라이딩 창 개념을 사용합니다. 이전 창 합계에 다음 맨 오른쪽 요소를 추가하고 그 중에서 맨 왼쪽 요소를 제거합니다.

  • 정수 배열 arr[] 및 값 합계를 입력으로 사용합니다.

  • 함수 sum_array(int arr[], int size, int sum)는 주어진 범위에 있는 요소의 합으로 합 배열을 반환합니다.

  • 초기 카운트를 0으로 합니다.

  • 합계 배열을 arr_2[크기]로 가져옵니다.

  • 온도 =합계 / 2 + 1을 취하십시오.

  • 0에서 temp까지 요소의 임시 수를 추가하여 계산합니다. 그리고 arr_2[0]을 count로 설정합니다.

  • 합계 배열의 다음 요소에 대해 for 루프를 사용하여 i=1에서 i까지 순회합니다.

  • temp_1 =i − (sum / 2) − 1을 취합니다.>=0이면 count에서 arr[temp_1]을 뺍니다.

  • temp_2 =i + (합계 / 2)를 취하십시오. <크기이면 arr[temp_2]를 추가하여 계산합니다.

  • arr_2[i] =count를 설정합니다.

  • for 루프의 끝에서 우리는 합계 배열로 rr_2[]를 가질 것입니다.

  • for 루프를 사용하여 합계 배열 arr_2[]를 인쇄합니다.

예시

#include <bits/stdc++.h>
using namespace std;
void sum_array(int arr[], int size, int sum){
   int count = 0;
   int arr_2[size];
   int temp = sum / 2 + 1;
   for (int i = 0; i < temp; i++){
      count = count + arr[i];
   }
   arr_2[0] = count;
   for (int i = 1; i < size; i++){
      int temp_1 = i − (sum / 2) − 1;
      if (temp_1 >= 0){
         count = count − arr[temp_1];
      }
      int temp_2 = i + (sum / 2);
      if (temp_2 < size){
         count = count + arr[temp_2];
      }
      arr_2[i] = count;
   }
   cout<<"Construction of sum−array with sum of elements in given range are: ";
   for (int i = 0; i < size; i++){
      cout<< arr_2[i] << " ";
   }
}
int main(){
   int arr[] = { 4, 1, 7, 5, 2, 9, 6, 2, 1 };
   int sum = 3;
   int size = sizeof(arr) / sizeof(int);
   sum_array(arr, size, sum);
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다 -

Construction of sum-array with sum of elements in given range are − 5 12 13 14 16 17 17 9 3