C++ 程式演示宏函式


假設我們給定一個包含多個整數值的整數陣列。我們必須找出陣列中最小值和最大值之間的差值。為了解決這個問題,我們必須使用宏。輸入來自標準輸入,結果列印回標準輸出。

因此,如果輸入類似於陣列 = {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
  • 列印(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

更新於:2021 年 10 月 12 日

370 次瀏覽

開啟你的 事業

完成課程獲得認證

立刻開始
廣告
© . All rights reserved.