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

সি++ প্রোগ্রাম: কন্ডিশনাল অপারেটর ছাড়া অ্যারেতে সর্বোচ্চ উপাদান নির্ণয়


একটি অ্যারে A কিছু উপাদান সহ দেওয়া থাকলে, সেটি থেকে সর্বোচ্চ উপাদান বের করতে হবে, কিন্তু শর্ত হলো কোনো কন্ডিশনাল অপারেটর (conditional operator) ব্যবহার করা যাবে না। A = [12, 63, 32, 24, 78, 56, 20] হলে সর্বোচ্চ ৭৮।

সমাধান: বিটওয়াইজ AND অপারেশন ব্যবহার করা হবে। প্রথমে INT_MAX (সব বিট ১) অ্যারেতে যোগ করা। তারপর অ্যারেতে যেকোনো জোড়ার (pair) সর্বোচ্চ AND মান বের করা। এই মান হবে INT_MAX এবং মূল অ্যারেতে সর্বোচ্চ উপাদানের AND মান, যা হবে ফলাফল।

উদাহরণ

#include <iostream> #include <vector> using namespace std; int checkBit(int pattern, vector arr, int n) {    int count = 0;    for (int i = 0; i < n; i++)       if ((pattern & arr[i]) == pattern)          count++;    return count;    }    int findLargestElement(int arr[], int n) {       vector elements_vector(arr, arr + n);       elements_vector.push_back(INT_MAX);       n++;       int res = 0;       for (int bit = 31; bit >= 0; bit--) {          int count = checkBit(res | (1 << bit), elements_vector, n);          if ((count | 1) != 1)                res |= (1 << bit);       }       return res; } int main() {    int arr[] = {12, 63, 32, 24, 78, 56, 20};    int n = sizeof(arr) / sizeof(arr[0]);    cout << "Largest element is: " << findLargestElement(arr, n); }

আউটপুট

Largest element is: 78

  1. C++ ব্যবহার করে স্ট্রাকচার অ্যারেতে সর্বোচ্চ মান বের করা

  2. C++ ব্যবহার করে অ্যারেতে বাম ও ডান পাশের যোগফল সমান হয় এমন এলিমেন্ট বের করা

  3. অ্যারে উপাদানগুলোর সারপাসার (Surpasser) কাউন্ট (C++)

  4. অ্যারেতে সবচেয়ে বড় এলিমেন্ট (Largest Element) বের করার C++ প্রোগ্রাম