ধরুন আমরা কমপ্লেক্স নম্বারের কাজ করার জন্য একটি ক্লাস ডিফাইন করতে চাই যাতে নিচের অপারেশনগুলো থাকে:
add()- দুটি কমপ্লেক্স নম্বর যোগ করতেsub()- দুটি কমপ্লেক্স নম্বর বিয়োগ করতেmul()- দুটি কমপ্লেক্স নম্বর গুণ করতেdiv()- দুটি কমপ্লেক্স নম্বর ভাগ করতেmod()- কমপ্লেক্স নম্বারের মডুলাস বের করতে
কমপ্লেক্স নম্বরগুলো (a + bi) ফরম্যাটে দেখানো হবে। আমাদের দুটি কমপ্লেক্স নম্বর আছে, ওপরে এই অপারেশনগুলো করব। ক্লাসের ভেতরে add(), sub(), mul(), div() মেথডগুলো ওভারলোড করব যাতে অপারেটর ব্যবহার করে অপারেশন করা যায়। __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।
সমাধানের ধাপসমূহ
- রিয়েল পার্ট
reএবং ইমেজিনারি পার্টimদিয়ে কমপ্লেক্স ক্লাস ডিফাইন করুন add()ফাংশন ডিফাইন করুন যাoনেবে, নতুন কমপ্লেক্স অবজেক্ট রিটার্ন করবে(re + o.re, im + o.im)দিয়েsub()ফাংশন ডিফাইন করুন, রিটার্ন করবে(re - o.re, im - o.im)mul()ফাংশন ডিফাইন করুন, রিটার্ন করবে(re*o.re - im*o.im, re*o.im + im*o.re)div()ফাংশন ডিফাইন করুন:m := o.re*o.re + o.im*o.im- রিটার্ন করবে
((re*o.re + im*o.im)/m, (im*o.re - re*o.im)/m)
mod()ফাংশন ডিফাইন করুন, রিটার্ন করবেsqrt(re*re + im*im)__str__()ওভারলোড করুন:- যদি
im == 0, তবেreদুটি দশমিক পয়েন্ট পর্যন্ত রিটার্ন করুন - যদি
re == 0, তবেimদুটি দশমিক পয়েন্ট পর্যন্ত রিটার্ন করুন - যদি
im < 0, তবেre - im iফরম্যাটে রিটার্ন করুন - অন্যথায়
re + im iফরম্যাটে রিটার্ন করুন
- যদি
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝার জন্য:
from math import sqrt
class Complex:
def __init__(self, real, imag):
self.re = real
self.im = imag
def __add__(self, o):
return Complex(self.re + o.re, self.im + o.im)
def __sub__(self, o):
return Complex(self.re - o.re, self.im - o.im)
def __mul__(self, o):
return Complex(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.im
return Complex((self.re*o.re + self.im*o.im)/m, (self.im*o.re - self.re*o.im)/m)
def __str__(self):
if self.im == 0:
return '%.2f' % self.re
if self.re == 0:
return '%.2fi' % self.im
if self.im < 0:
return '%.2f - %.2fi' % (self.re, -self.im)
else:
return '%.2f + %.2fi' % (self.re, self.im)
def mod(self):
return sqrt(self.re*self.re + self.im*self.im)
def solve(comp1, comp2):
print(comp1 + comp2)
print(comp1 - comp2)
print(comp1 * comp2)
print(comp1 / comp2)
print('%.2f' % comp1.mod())
print('%.2f' % comp2.mod())
comp1 = Complex(2, 3)
comp2 = Complex(5, -2)
solve(comp1, comp2)
ইনপুট
2, 3 5, -2
আউটপুট
7.00 + 1.00i -3.00 + 5.00i 16.00 + 11.00i 0.14 + 0.66i 3.61 5.39