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

โปรแกรม C++ สาธิตการทำงานของมาโคร


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

ดังนั้น หากอินพุตเป็นเหมือน array ={120, 589, 324, 221, 234} ผลลัพธ์จะเป็น คำตอบคือ :469

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

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • มินิ :=อินฟินิตี้
  • แม็กซี่ :=ลบอินฟินิตี้
  • สำหรับแต่ละ i ใน v ทำ
    • ถ้ามินิ> v[i] แล้ว
      • มินิ :=v[i]
    • ถ้าแม็กซี่
    • แม็กซี่ :=v[i]
  • ans :=แม็กซี่ - มินิ
  • พิมพ์(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