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()는 문자열을 연결합니다.

  • 기본 방법에서 다음을 수행하십시오.

  • initialize i :=0의 경우 i

    • 유형 :=현재 유형

    • 유형이 "float"와 같은 경우:

      • 두 개의 피연산자 e1과 e2 사용

      • 항목 e1을 사용하여 myfloat라는 float 유형의 AddItems 개체를 만듭니다.

      • myfloat.add(e2)를 호출하고 표시

    • 그렇지 않으면 유형이 "int"와 같을 때:

      • 두 개의 피연산자 e1과 e2 사용

      • 항목 e1을 사용하여 myint라는 float 유형의 AddItem 개체를 만듭니다.

      • myint.add(e2)를 호출하고 표시

    • 그렇지 않으면 유형이 "문자열"과 같을 때:

      • 두 개의 피연산자 e1과 e2 사용

      • 항목 e1을 사용하여 mystring이라는 float 유형의 AddItems 개체를 만듭니다.

      • 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++