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

โปรแกรม C++ เพื่อเพิ่มรายการต่าง ๆ ด้วยเทมเพลตคลาส


สมมติว่าเราต้องการสร้างคลาสที่เพิ่มจำนวนเต็มสองจำนวน สองทุ่น และสองสตริง (การเพิ่มสตริงโดยทั่วไปคือการต่อสตริงเข้าด้วยกัน) เมื่อป้อนข้อมูลในตอนแรกเราใช้ตัวเลข n หมายถึงมีการดำเนินการที่แตกต่างกัน n รายการ ในแต่ละการดำเนินการ รายการแรกคือประเภท [int, float, string] และวินาทีและสามคือตัวถูกดำเนินการสองตัว ดังนั้นแต่ละบรรทัดจะมีสามองค์ประกอบ เราจะต้องอ่านและดำเนินการตามที่กล่าวมา

ดังนั้นหากอินพุตเป็นแบบ

5
int 5 7
int 6 9
float 5.25 9.63
string hello world
string love C++

แล้วผลลัพธ์ที่ได้จะเป็น

12
15
14.88
helloworld
loveC++

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

  • กำหนดคลาสที่เรียกว่า AddItems ด้วยเทมเพลตคลาส มันมีสองฟังก์ชั่น add() และ concatenate() add() จะเพิ่มจำนวนเต็มและจำนวนลอย และ concatenate() จะเชื่อมสตริงเข้าด้วยกัน

  • จากวิธีหลัก ให้ทำดังนี้

  • สำหรับการเริ่มต้น i :=0 เมื่อฉัน

    • type :=ประเภทปัจจุบัน

    • หากประเภทเหมือนกับ "float" แล้ว:

      • ใช้ตัวถูกดำเนินการสองตัว e1 และ e2

      • สร้างวัตถุของ AddItems ประเภท float ที่เรียกว่า myfloat พร้อมรายการ e1

      • โทร myfloat.add(e2) และแสดงผล

    • มิฉะนั้นเมื่อประเภทเหมือนกับ "int" ดังนั้น:

      • ใช้ตัวถูกดำเนินการสองตัว e1 และ e2

      • สร้างวัตถุของ AddItems ประเภท float ที่เรียกว่า myint พร้อมรายการ e1

      • โทร myint.add(e2) และแสดงผล

    • มิฉะนั้นเมื่อประเภทเหมือนกับ "สตริง" ดังนั้น:

      • ใช้ตัวถูกดำเนินการสองตัว e1 และ e2

      • สร้างวัตถุของ AddItems ประเภท float ที่เรียกว่า mystring พร้อมรายการ e1

      • โทร mystring.concatenate(e2) และแสดงผล

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <iostream>
using namespace std;
template <class T>
class AddItems {
    T element;
  public:
    AddItems (T arg) {
        element=arg;
    }
    T add (T e2) {
        return element+e2;
    }
    T concatenate (T e2) {
        return element+e2;
    }
};
int main(){
    int n,i;
    cin >> n;
    for(i=0;i<n;i++) {
        string type;
        cin >> type;
        if(type=="float") {
            float e1,e2;
            cin >> e1 >> e2;
            AddItems<float> myfloat (e1);
            cout << myfloat.add(e2) << endl;
        }
        else if(type == "int") {
            int e1, e2;
            cin >> e1 >> e2;
            AddItems<int> myint (e1);
            cout << myint.add(e2) << endl;
        }
        else if(type == "string") {
            string e1, e2;
            cin >> e1 >> e2;
            AddItems<string> mystring (e1);
            cout << mystring.concatenate(e2) << endl;
        }
    }
}

อินพุต

5
int 5 7
int 6 9
float 5.25 9.63
string hello world
string love C++

ผลลัพธ์

12
15
14.88
helloworld
loveC++