मान लीजिए कि हमें एक पूर्णांक सरणी दी गई है जिसमें कई पूर्णांक मान हैं। हमें सरणी में सबसे छोटे मान और सबसे बड़े मान के बीच अंतर का पता लगाना है। इस समस्या को हल करने के लिए हमें मैक्रोज़ का उपयोग करना होगा। इनपुट स्टड से लिए जाते हैं, और परिणाम वापस स्टडआउट पर प्रिंट हो जाता है।
तो, अगर इनपुट ऐरे की तरह है ={120, 589, 324, 221, 234}, तो आउटपुट होगा उत्तर:469
सबसे बड़े मान 589 और सबसे छोटे मान 120 के बीच का अंतर 469 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- मिनी:=अनंत
- मैक्सी:=नकारात्मक अनंत
- v में प्रत्येक i के लिए, करते हैं
- अगर मिनी> वी[i], तो
- मिनी:=वी[i]
- अगर मैक्सी
- मैक्सी:=वी[i]
- अगर मिनी> वी[i], तो
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#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