C++ 程序演示宏的功能
c++server side programmingprogramming
假设我们有一个包含多个整数值的整数数组。我们必须找出数组中最小值和最大值之间的差值。为了解决这个问题,我们必须使用宏。输入取自 stdin,结果打印回 stdout。
因此,如果输入类似 array = {120, 589, 324, 221, 234},则输出将是答案:469
最大值 589 和最小值 120 之间的差是 469。
为了解决这个问题,我们将遵循以下步骤 −
- mini := 无穷大
- maxi := 负无穷大
- 对于 v 中的每个 i,执行
- 如果 mini > v[i],则
- mini := v[i]
- 如果 maxi < v[i],则
- maxi := v[i]
- 如果 mini > v[i],则
- ans := maxi - mini
- print(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