यहां हम देखेंगे कि कैसे एक क्रमबद्ध सरणी में फर्श और छत का पता लगाया जाए। फ्लोर वैल्यू बड़ा तत्व है जो 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