สมมติว่าเราได้รับอาร์เรย์จำนวนเต็มที่มีค่าจำนวนเต็มหลายค่า เราต้องหาความแตกต่างระหว่างค่าที่น้อยที่สุดและค่าที่มากที่สุดในอาร์เรย์ เพื่อแก้ปัญหานี้ เราต้องใช้มาโคร อินพุตถูกนำมาจาก 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