Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ สาธิตการใช้แมโคร (Macros)


สมมติว่าเราได้รับอาเรย์จำนวนเต็ม เราต้องหาผลต่างระหว่างค่าสูงสุดและค่าต่ำสุดในอาเรย์ โดยต้องใช้แมโคร (macros) ในการแก้ปัญหา รับอินพุตจาก stdin และพิมพ์ผลลัพธ์ไป stdout

เช่น หาก array = {120, 589, 324, 221, 234} ผลลัพธ์จะเป็น "The answer is : 469"

ผลต่างระหว่างค่าสูงสุด 589 และค่าต่ำสุด 120 คือ 469

ขั้นตอนการแก้ปัญหา

  • mini := infinity, maxi := -infinity
  • วนลูปทุกค่า i ใน v:
    • ถ้า 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