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]
  • 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

相关文章