मान लीजिए हमें एक पूर्णांक सरणी दी गई है जिसमें कई पूर्णांक मान हैं। हमें सरणी में सबसे छोटे मान और सबसे बड़े मान के बीच का अंतर ज्ञात करना है। इस समस्या को हल करने के लिए हमें मैक्रोज़ का उपयोग करना होगा। इनपुट stdin से लिए जाते हैं, और परिणाम stdout पर प्रिंट किया जाता है।
उदाहरण के लिए, यदि इनपुट array = {120, 589, 324, 221, 234} है, तो आउटपुट होगा: The answer is : 469
सबसे बड़े मान 589 और सबसे छोटे मान 120 के बीच का अंतर 469 है।
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- mini := अनंत
- maxi := ऋणात्मक अनंत
- v में प्रत्येक i के लिए:
- यदि mini > v[i], तो mini := v[i]
- यदि maxi < v[i], तो maxi := v[i]
- ans := maxi - mini
- ans प्रिंट करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#define minmac(a, b) a = min(a, b) #define maxmac(a, b) a = max(a, b) #define INF ((1 << 31)-2) #define input(a) cin >> a #define toStr(a) string("The answer is :") #define FOO(a, b) #define foreach(a, b) for (int i = 0; i < a.size(); ++i) #include <iostream> #include <vector> using namespace std; FOO(minmac, <) FOO(maxmac, >) int main(){ int n; cin >> n; vector<int> v(n); foreach(v, i) { input(v)[i]; } int mini = INF; int maxi = -INF; foreach(v, i) { minmac(mini, v[i]); maxmac(maxi, v[i]); } int ans = maxi - mini; cout << toStr(The answer is :) <<' '<< ans; return 0; }इनपुट
5 120 589 324 221 234
आउटपुट
The answer is : 469