এখানে আমরা দেখব কিভাবে অনসর্টেড অ্যারেতে ফ্লোর (floor) এবং সিলিং (ceiling) বের করতে হয়। ফ্লোর ভ্যালু হল x-এর চেয়ে ছোট বা সমান সবচেয়ে বড় এলিমেন্ট, এবং সিলিং ভ্যালু হল x-এর চেয়ে বড় সবচেয়ে ছোট এলিমেন্ট। যদি অ্যারে A = [5, 6, 8, 9, 6, 5, 5, 6], এবং x = 7 হয়, তবে ফ্লোর = 6 এবং সিলিং = 8।
এটি সমাধান করতে লিনিয়ার সার্চ পদ্ধতি ফলো করব। অ্যারেটি ট্রাভার্স করব এবং x-এর সাপেক্ষে দুটি দূরত্ব ট্র্যাক করব:
- x-এর চেয়ে বড় বা সমান এলিমেন্টের ন্যূনতম দূরত্ব
- x-এর চেয়ে ছোট বা সমান এলিমেন্টের ন্যূনতম দূরত্ব
- শেষে ন্যূনতম দূরত্ব वाले এলিমেন্ট প্রিন্ট করব
উদাহরণ কোড
#include <iostream>
using namespace std;
void floorCeilingPair(int arr[], int n, int x) {
int floor_index, ceiling_index;
int floor_dist = INT_MAX, ceil_dist = INT_MAX;
for (int i = 0; i < n; i++) {
if (arr[i] >= x && ceil_dist > (arr[i] - x)) {
ceiling_index = i;
ceil_dist = arr[i] - x;
}
if (arr[i] <= x && floor_dist > (x - arr[i])) {
floor_index = i;
floor_dist = x - arr[i];
}
}
if (floor_dist == INT_MAX)
cout << "Floor not found" << endl;
else
cout << "Floor value is " << arr[floor_index] << endl;
if (ceil_dist == INT_MAX)
cout << "Ceiling not found" << endl;
else
cout << "Ceil value is " << arr[ceiling_index] << endl;
}
int main() {
int arr[] = {5, 6, 8, 9, 6, 5, 5, 6};
int n = sizeof(arr) / sizeof(int);
int x = 7;
floorCeilingPair(arr, n, x);
}
আউটপুট
Floor value is 6 Ceil value is 8