Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

매크로의 기능을 보여주는 C++ 프로그램

<시간/>

여러 정수 값을 포함하는 정수 배열이 주어진다고 가정합니다. 배열에서 가장 작은 값과 가장 큰 값의 차이를 찾아야 합니다. 이 문제를 해결하려면 매크로를 사용해야 합니다. 입력은 stdin에서 가져오고 결과는 stdout으로 다시 인쇄됩니다.

따라서 입력이 array ={120, 589, 324, 221, 234}와 같으면 출력은 The answer is :469

가 됩니다.

가장 큰 값 589와 가장 작은 값 120의 차이는 469입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 미니 :=무한대
  • maxi :=음의 무한대
  • v의 각 i에 대해 다음을 수행합니다.
    • 미니> v[i]이면
      • 미니 :=v[i]
    • maxi
    • 맥시 :=v[i]
  • 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