मान लीजिए हम एक क्लास बनाना चाहते हैं जो दो पूर्णांकों, दो फ्लोट और दो स्ट्रिंग्स को जोड़ सके (स्ट्रिंग जोड़ मूल रूप से स्ट्रिंग्स को जोड़ना है)। इनपुट के रूप में पहले हम एक संख्या 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 से n-1 तक:
- type := वर्तमान प्रकार
- यदि type "float" के समान है:
- दो ऑपरेंड e1 और e2 लें
- प्रकार float के AddItems का एक ऑब्जेक्ट myfloat बनाएं जिसमें आइटम e1 हो
- myfloat.add(e2) कॉल करें और प्रदर्शित करें
- अन्यथा यदि type "int" के समान है:
- दो ऑपरेंड e1 और e2 लें
- प्रकार int के AddItems का एक ऑब्जेक्ट myint बनाएं जिसमें आइटम e1 हो
- myint.add(e2) कॉल करें और प्रदर्शित करें
- अन्यथा यदि type "string" के समान है:
- दो ऑपरेंड e1 और e2 लें
- प्रकार string के AddItems का एक ऑब्जेक्ट mystring बनाएं जिसमें आइटम e1 हो
- mystring.concatenate(e2) कॉल करें और प्रदर्शित करें
- i := 0 से n-1 तक:
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#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++