Giả sử chúng ta được cung cấp một mảng số nguyên có chứa một số giá trị nguyên. Chúng ta phải tìm ra sự khác biệt giữa giá trị nhỏ nhất và giá trị lớn nhất trong mảng. Để giải quyết vấn đề này, chúng ta phải sử dụng macro. Các đầu vào được lấy từ stdin và kết quả được in trở lại stdout.
Vì vậy, nếu đầu vào giống như mảng ={120, 589, 324, 221, 234}, thì đầu ra sẽ là Câu trả lời là:469
Hiệu số giữa giá trị lớn nhất 589 và giá trị nhỏ nhất 120 là 469.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- mini:=infinity
- maxi:=âm vô cực
- đối với mỗi tôi trong v, thực hiện
- if mini> v [i], then
- mini:=v [i]
- nếu maxi
- maxi:=v [i]
- if mini> v [i], then
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#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; }
Đầu vào
5 120 589 324 221 234
Đầu ra
The answer is : 469