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

โปรแกรม C++ บวกข้อมูลหลายประเภทด้วย Class Templates


สมมติว่าเราต้องการสร้างคลาสที่บวกได้ทั้ง int, float และ string (string คือการต่อสตริง) อินพุตแรกคือ n จำนวนออเปอเรชัน แต่ละออเปอเรชันมี 3 ส่วน: ประเภท [int, float, string] และตัวถูกดำเนินการ 2 ตัว

เช่น อินพุต: 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 แบบ template มีฟังก์ชัน add() สำหรับ int/float และ concatenate() สำหรับ string
  • ใน main อ่าน n แล้ววนลูป n รอบ:
    • อ่าน type
    • ถ้า float: อ่าน e1, e2 สร้าง AddItems<float> เรียก add(e2)
    • ถ้า int: อ่าน e1, e2 สร้าง AddItems<int> เรียก add(e2)
    • ถ้า string: อ่าน e1, e2 สร้าง AddItems<string> เรียก 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++