मान लीजिए कि हम निम्नलिखित कार्यों के साथ एक जटिल संख्या वर्ग को परिभाषित करके जटिल संख्या कार्य करना चाहते हैं -
- दो सम्मिश्र संख्याओं को जोड़ने के लिए
- जोड़ें ()
- sub() दो सम्मिश्र संख्याओं को घटाने के लिए
- mul() दो सम्मिश्र संख्याओं को गुणा करने के लिए
- div() दो सम्मिश्र संख्याओं को विभाजित करने के लिए
- mod() सम्मिश्र संख्याओं का मापांक प्राप्त करने के लिए
सम्मिश्र संख्याओं को फॉर्म (a + bi) में दिखाया जाएगा। हमारे पास दो सम्मिश्र संख्याएँ हैं, उन पर ये संक्रियाएँ करेंगे। कक्षा के अंदर हम ऐड (), उप (), मल () और डिव () विधियों को अधिभारित करते हैं ताकि हम संचालन करने के लिए ऑपरेटरों का उपयोग कर सकें। हम सम्मिश्र संख्या को उचित रूप में मुद्रित करने के लिए __str__() विधि को भी अधिभारित करते हैं।
इसलिए, यदि इनपुट c1 =2+3i c2 =5-2i जैसा है, तो आउटपुट (7.00 + 1.00i), (-3.00 + 5.00i), (16.00 + 11.00i), (0.14 + 0.66i) होगा। ), 3.61, 5.39.
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- जटिल वर्ग को वास्तविक भाग पुनः और काल्पनिक भाग im के साथ परिभाषित करें
- एक फंक्शन ऐड () को परिभाषित करें। इसमें o . लगेगा
- एक नया कॉम्प्लेक्स ऑब्जेक्ट लौटाएं (re + o.re, im + o.im)
- एक फ़ंक्शन को परिभाषित करें sub() । इसमें o . लगेगा
- एक नया कॉम्प्लेक्स ऑब्जेक्ट लौटाएं (re - o.re, im - o.im)
- एक फ़ंक्शन को परिभाषित करें mul() । इसमें o . लगेगा
- एक नया कॉम्प्लेक्स ऑब्जेक्ट लौटाएं (re * o.re -im * o.im, re * o.im + im * o.re)
- एक फंक्शन डिव () को परिभाषित करें। इसमें o . लगेगा
- m :=o.re * o.re + o.im * o.im
- एक नया कॉम्प्लेक्स नंबर ऑब्जेक्ट लौटाएं ((re * o.re + im * o.im)/m, (im * o.re - re * o.im)/m)
- एक फ़ंक्शन को परिभाषित करें mod() । इसमें लगेगा
- (re * re + im * im) का वर्गमूल लौटाएं
- ओवरलोड __str__().
- यदि im 0 के समान है, तो
- दो दशमलव स्थानों तक वापसी करें
- यदि पुनः 0 के समान है, तो
- दो दशमलव स्थानों तक वापसी करें
- अगर मैं <0, तो
- वापसी पुनः - im i, दोनों (पुनः और im दो दशमलव स्थानों तक हैं)
- अन्यथा,
- रिटर्न री + आईएम आई, दोनों (री और आईएम दो दशमलव स्थानों तक हैं)
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
गणित आयात से im+o.im) def __sub__(self, o):रिटर्न कॉम्प्लेक्स(self.re-o.re, self.im-o.im) def __mul__(self, o):रिटर्न कॉम्प्लेक्स(self.re*o. re-self.im*o.im, self.re * o.im + self.im * o.re) def __truediv__(self, o):m =o.re * o.re + o.im * o. आईएम रिटर्न कॉम्प्लेक्स ((self.re * o.re + self.im * o.im)/m, (self.im * o.re - self.re * o.im)/m) def __str__(self):अगर self.im ==0:वापसी '%.2f'% self.re अगर self.re ==0:वापसी '%.2fi'% self.im अगर self.im <0:वापसी '%.2f -% .2fi'% (self.re, -self.im) अन्य:वापसी '%.2f +%.2fi'% (self.re, self.im) def mod(self):वापसी sqrt(self.re*self) .re+self.im*self.im) def हल (comp1, COMP2):प्रिंट (comp1 + COMP2) प्रिंट (comp1 - COMP2) प्रिंट (comp1 * COMP2) प्रिंट (comp1 / COMP2) प्रिंट ('% .2f') % COMP1.mod ()) प्रिंट ('%.2f'% comp2.mod ())comp1 =कॉम्प्लेक्स(2, 3)comp2 =कॉम्प्लेक्स(5, -2)समाधान(comp1, comp2)इनपुट
2, 35, -2
आउटपुट
7.00 + 1.00i-3.00 + 5.00i16.00 + 11.00i0.14 + 0.66i3.615.39