কম্পিউটার টিউটোরিয়াল

নির্দিষ্ট রেঞ্জে এলিমেন্টের যোগফল দিয়ে সম-অ্যারে নির্মাণ C++-এ


একটি অ্যারে arr[] দেওয়া আছে যেটি শুধু ইন্টিজার ধারণ করে এবং একটি বিজোড় সংখ্যা sum। লক্ষ্য হলো একটি সম-অ্যারে arr_2[] তৈরি করা যাতে প্রতিটি arr_2[i] হলো arr[]-এর পূর্বের sum/2 সংখ্যক এলিমেন্ট + arr[i] + পরবর্তী sum/2 সংখ্যক এলিমেন্ট। যদি sum ১ হয় তবে 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

ব্যাখ্যা

সম-অ্যারে নিচের মত তৈরি হয়েছে:
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 = 11

ইনপুট

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

ব্যাখ্যা

সম-অ্যারে নিচের মত তৈরি হয়েছে:
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 ইনপুট নেওয়া হয়।
  • sum_array(int arr[], int size, int sum) ফাংশন রেঞ্জে এলিমেন্টের যোগফল দিয়ে সম-অ্যারে রিটার্ন করে।
  • ইনিশিয়াল কাউন্ট ০। সম-অ্যারে arr_2[size]।
  • temp = sum / 2 + 1।
  • ০ থেকে temp পর্যন্ত এলিমেন্ট যোগ করে count-এ রাখা হয় এবং arr_2[0] সেট করা হয়।
  • পরবর্তী এলিমেন্টের জন্য ফর লুপ i=1 থেকে i<size।
  • temp_1 = i - (sum/2) - 1। যদি >=0 হয় তবে arr[temp_1] বিয়োগ করা হয়।
  • temp_2 = i + (sum/2)। যদি < size হয় তবে arr[temp_2] যোগ করা হয়।
  • arr_2[i] = count সেট করা হয়।
  • ফর লুপ শেষে arr_2[] সম-অ্যারে হিসেবে পাওয়া যায়।
  • ফর লুপ দিয়ে 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

  1. C++-এ দেওয়া রেঞ্জের জন্য সর্বোচ্চ প্রিফিক্স-সাম

  2. নির্দিষ্ট যোগফল দিয়ে সব ট্রিপলেট প্রিন্ট করা C++-তে

  3. নির্দিষ্ট যোগফল দিয়ে সব পেয়ার প্রিন্ট করা C++-তে

  4. C++-এ দেওয়া অপারেশন দিয়ে অ্যারে যোগফল সর্বাধিক করা