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

সি++ প্রোগ্রাম: সম এবং বিজোড় অ্যারে থেকে অনুপস্থিত এলিমেন্ট খুঁজে বের করা


সমস্যা বিবরণ

দুটি ইন্টিজার অ্যারে even[] এবং odd[] দেওয়া আছে যাতে ক্রমানুসারী সম এবং বিজোড় এলিমেন্ট থাকে, কিন্তু প্রতিটি অ্যারেতে একটি করে এলিমেন্ট অনুপস্থিত। কাজ হল সেই অনুপস্থিত এলিমেন্টগুলো খুঁজে বের করা।

উদাহরণ

যদি even[] = {10, 8, 6, 16, 12} এবং odd[] = {3, 9, 13, 7, 11} হয়,
তবে সম অ্যারেতে অনুপস্থিত সংখ্যা ১৪ এবং বিজোড় অ্যারেতে ৫।

অ্যালগরিদম

  • even[] অ্যারেতে ন্যূনতম এবং সর্বোচ্চ সম এলিমেন্ট খুঁজে minEven এবং maxEven ভেরিয়েবলে রাখুন।
  • প্রথম Nটি সম সংখ্যার যোগফল = N * (N + 1)। ২ থেকে minEven পর্যন্ত সম সংখ্যার যোগফল sum1 এবং ২ থেকে maxEven পর্যন্ত যোগফল sum2 হিসাব করুন।
  • প্রয়োজনীয় সম অ্যারের যোগফল reqSum = sum2 - sum1 + minEven। এই reqSum থেকে even[] অ্যারের যোগফল বিয়োগ করলে অনুপস্থিত সম সংখ্যা পাওয়া যাবে।
  • অবিশেষভাবে, প্রথম Nটি বিজোড় সংখ্যার যোগফল = N² জানায়। একই পদ্ধতিতে অনুপস্থিত বিজোড় সংখ্যাও বের করা যাবে।

সি++ কোড উদাহরণ

#include <bits/stdc++.h>
using namespace std;

void findMissingNums(int even[], int sizeEven, int odd[], int sizeOdd) {
    int minEven = INT_MAX, maxEven = INT_MIN;
    int minOdd = INT_MAX, maxOdd = INT_MIN;
    int sumEvenArr = 0, sumOddArr = 0;

    for (int i = 0; i < sizeEven; i++) {
        minEven = min(minEven, even[i]);
        maxEven = max(maxEven, even[i]);
        sumEvenArr += even[i];
    }
    for (int i = 0; i < sizeOdd; i++) {
        minOdd = min(minOdd, odd[i]);
        maxOdd = max(maxOdd, odd[i]);
        sumOddArr += odd[i];
    }

    int totalTerms = 0, reqSum = 0;
    totalTerms = minEven / 2;
    int evenSumMin = totalTerms * (totalTerms + 1);
    totalTerms = maxEven / 2;
    int evenSumMax = totalTerms * (totalTerms + 1);
    reqSum = evenSumMax - evenSumMin + minEven;
    cout << "Missing even number = " << reqSum - sumEvenArr << "\n";

    totalTerms = (minOdd / 2) + 1;
    int oddSumMin = totalTerms * totalTerms;
    totalTerms = (maxOdd / 2) + 1;
    int oddSumMax = totalTerms * totalTerms;
    reqSum = oddSumMax - oddSumMin + minOdd;
    cout << "Missing odd number = " << reqSum - sumOddArr << "\n";
}

int main() {
    int even[] = {10, 8, 6, 16, 12};
    int sizeEven = sizeof(even) / sizeof(even[0]);
    int odd[] = {3, 9, 13, 7, 11};
    int sizeOdd = sizeof(odd) / sizeof(odd[0]);
    findMissingNums(even, sizeEven, odd, sizeOdd);
    return 0;
}

আউটপুট

Missing even number = 14
Missing odd number = 5

  1. বিজোড় এবং জোড় সংখ্যক নোড वाले ট্রি লেভেল প্রিন্ট করা C++-তে

  2. তিনটি সর্টেড অ্যারে থেকে তিনটি সन्नিকট উপাদান খুঁজে বের করা C++-তে

  3. C++ তে অ্যারেতে জোড় ও বিজোড় ইনডেক্সের এবসোলিউট ডিফারেন্স

  4. C++-এ অ্যারেতে জোড় ও বিজোড় ইনডেক্সের উপাদানগুলোর tuyệt đối পার্থক্য