두 개의 정수, 두 개의 부동 소수점 및 두 개의 문자열을 추가할 수 있는 클래스를 만들고 싶다고 가정합니다(문자열 추가는 기본적으로 문자열을 연결하는 것입니다). 처음에 입력으로 숫자 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++