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

দেওয়া কনস্ট্রেইন্ট অনুযায়ী দুটি অ্যারের এলিমেন্ট যোগ করা

এই সমস্যায় দুটি দেওয়া অ্যারের এলিমেন্ট যোগ করার সময় কিছু কনস্ট্রেইন্ট রয়েছে। দুটি অ্যারে a[] ও b[]-এর যোগফল তৃতীয় অ্যারে c[]-এ সংরক্ষিত হবে এমনভাবে যে যোগফলগুলো একক অঙ্কে থাকবে। আর যদি যোগফলের অঙ্কের সংখ্যা ১-এর বেশি হয়, তবে তৃতীয় অ্যারেতে সেটি দুটি একক অঙ্ক হিসেবে স্টোর হবে। উদাহরণস্বরূপ, যোগফল ২৭ হলে তৃতীয় অ্যারেতে ২, ৭ স্টোর হবে।

ইনপুট: a[] = {1, 2, 3, 7, 9, 6}      b[] = {34, 11, 4, 7, 8, 7, 6, 99}
আউটপুট: 3 5 1 3 7 1 4 1 7 1 3 6 9 9

ব্যাখ্যা

আউটপুট অ্যারে তৈরি করে দুটি অ্যারের ০th ইনডেক্স থেকে লুপ চালানো হয়। প্রতিটি ইটেরেশনে দুটি অ্যারের পরবর্তী এলিমেন্ট নেয়া হয় এবং যোগ করা হয়। যদি যোগফল ৯-এর বেশি হয়, তবে যোগফলের প্রতিটি অঙ্ক আলাদা করে আউটপুট অ্যারেতে পুশ করা হয়, অন্যথায় যোগফলটিই পুশ করা হয়। অবশেষে বড় অ্যারের বাকি এলিমেন্টগুলো আউটপুট অ্যারেতে পুশ করা হয়।

উদাহরণ কোড (C++)

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
void split(int n, vector<int> &c) {
    vector<int> temp;
    while (n) {
        temp.push_back(n % 10);
        n = n / 10;
    }
    c.insert(c.end(), temp.rbegin(), temp.rend());
}
void addArrays(int a[], int b[], int m, int n) {
    vector<int> out;
    int i = 0;
    while (i < m && i < n) {
        int sum = a[i] + b[i];
        if (sum < 10) {
            out.push_back(sum);
        } else {
            split(sum, out);
        }
        i++;
    }
    while (i < m) {
        split(a[i++], out);
    }
    while (i < n) {
        split(b[i++], out);
    }
    for (int x : out)
        cout << x << " ";
}
int main() {
    int a[] = {1, 2, 3, 7, 9, 6};
    int b[] = {34, 11, 4, 7, 8, 7, 6, 99};
    int m = 6;
    int n = 8;
    addArrays(a, b, m, n);
    return 0;
}
  1. সি++ প্রোগ্রাম: সম এবং বিজোড় অ্যারে থেকে অনুপস্থিত এলিমেন্ট খুঁজে বের করা

  2. দেওয়া সীমাবদ্ধতায় ম্যাট্রিক্সে সবচেয়ে বড় পথ খুঁজে বের করা C++-তে

  3. অ্যারেতে নন-রিপিটিং (ডিস্টিংक्ट) উপাদানগুলোর যোগফল বের করা C++-তে

  4. দেওয়া পার্থক্যের সাথে একটি জোড়া খুঁজে বের করা C++-এ