Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ để thêm các mục khác nhau với các mẫu lớp

Giả sử chúng ta muốn tạo một lớp có thể thêm hai số nguyên, hai phao và hai chuỗi (phép cộng chuỗi về cơ bản là nối các chuỗi). Như đầu vào lúc đầu chúng ta lấy một số n biểu thị có n phép toán khác nhau. Trong mỗi phép toán, mục đầu tiên là kiểu [int, float, string] và mục thứ hai và thứ ba là hai toán hạng. Vì vậy, mỗi dòng sẽ chứa ba phần tử. Chúng tôi sẽ phải đọc chúng và thực hiện các thao tác như đã đề cập.

Vì vậy, nếu đầu vào giống như

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

thì đầu ra sẽ là

12
15
14.88
helloworld
loveC++

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Định nghĩa một lớp được gọi là AddItems với mẫu lớp. Nó có hai hàm add () và concatenate (). add () sẽ thêm các số nguyên và float, và concatenate () sẽ nối các chuỗi.

  • Từ phương thức chính, hãy thực hiện như sau

  • để khởi tạo i:=0, khi i

    • type:=loại hiện tại

    • nếu loại giống như "float", thì:

      • lấy hai toán hạng e1 và e2

      • tạo một đối tượng AddItems kiểu float gọi là myfloat với mục e1

      • gọi myfloat.add (e2) và hiển thị

    • ngược lại, khi kiểu giống như "int", thì:

      • lấy hai toán hạng e1 và e2

      • tạo một đối tượng AddItems kiểu float gọi là myint với mục e1

      • gọi myint.add (e2) và hiển thị

    • ngược lại, khi loại giống như "string", thì:

      • lấy hai toán hạng e1 và e2

      • tạo một đối tượng AddItems kiểu float gọi là mystring với mục e1

      • gọi mystring.concatenate (e2) và hiển thị

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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;
        }
    }
}

Đầu vào

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

Đầu ra

12
15
14.88
helloworld
loveC++