สมมติว่าเราได้รับอาร์เรย์จำนวนเต็มที่มีค่าจำนวนเต็มหลายค่า เราต้องหาความแตกต่างระหว่างค่าที่น้อยที่สุดและค่าที่มากที่สุดในอาร์เรย์ เพื่อแก้ปัญหานี้ เราต้องใช้มาโคร อินพุตถูกนำมาจาก stdin และผลลัพธ์จะถูกพิมพ์กลับไปที่ stdout
ดังนั้น หากอินพุตเป็นเหมือน array ={120, 589, 324, 221, 234} ผลลัพธ์จะเป็น คำตอบคือ :469
ความแตกต่างระหว่างค่าสูงสุด 589 และค่าต่ำสุด 120 คือ 469
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- มินิ :=อินฟินิตี้
- แม็กซี่ :=ลบอินฟินิตี้
- สำหรับแต่ละ i ใน v ทำ
- ถ้ามินิ> v[i] แล้ว
- มินิ :=v[i]
- ถ้าแม็กซี่
- แม็กซี่ :=v[i]
- ถ้ามินิ> v[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