Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ minh họa chức năng của macro

Giả sử chúng ta được cung cấp một mảng số nguyên chứa nhiều giá trị. Chúng ta phải tìm hiệu giữa giá trị nhỏ nhất và lớn nhất trong mảng. Để giải quyết bài toán này, chúng ta phải sử dụng macro. Đầu vào từ stdin, kết quả ra stdout.

Ví dụ: array = {120, 589, 324, 221, 234}, kết quả: "The answer is : 469". Hiệu giữa 589 và 120 là 469.

Giải thuật

  • mini := vô cực, maxi := âm vô cực
  • Duyệt qua mảng: cập nhật mini và maxi
  • ans := maxi - mini
  • In ans

Sử dụng macro minmac, maxmac, INF, input, toStr, FOO, foreach.

Ví dụ minh họa

#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