কম্পিউটার টিউটোরিয়াল

পাইথনে কমপ্লেক্স নম্বারের জন্য ক্লাস ডিফাইন করার প্রোগ্রাম

ধরুন আমরা কমপ্লেক্স নম্বারের কাজ করার জন্য একটি ক্লাস ডিফাইন করতে চাই যাতে নিচের অপারেশনগুলো থাকে:

  • 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
  1. পাইথন প্রোগ্রাম: একটি সংখ্যার অনন্য প্রাইম ফ্যাক্টরের গুণফল বের করা

  2. পাইথন প্রোগ্রাম: n-তম ফিবোনাচ্চি সংখ্যা বের করা

  3. পাইথন প্রোগ্রাম: n-তম ক্যাটালান সংখ্যা বের করা

  4. পাইথন প্রোগ্রাম: একটি দেয়া সংখ্যা ফিবোনাচ্চি সংখ্যা কিনা যাচাই করা