Найти - Пользователи
Полная версия: Реализовать в виде класса набор подпрограмм, для выполнения следующих операций над комплексными числами
Начало » Центр помощи » Реализовать в виде класса набор подпрограмм, для выполнения следующих операций над комплексными числами
1 2 3 4 5 6
AsphaltHero
Реализовать в виде класса набор подпрограмм, для выполнения следующих операций над комплексными числами

Сложение
Вычитание
Умножение
Деление
Вычисление модуля комплексного числа
Возведение комплексного числа в степень n(n-натуральное).
Библиотеки по заданию нужно использовать свои.

Прошу, кого не затруднит, можете пояснить задание? Я в питоне до классов еще не дошел, но литературу то я почитаю.
Мне немного не понятно само задание. То есть я сам должен написать модули для вышеперечисленных операций и с помощью них уже и выполнять действия над числами? Если да, то как самому написать эти библиотеки, можно пример?

Сказали писать или на C++, но если можешь на чем-то другом, то пожалуйста. С c++ пока плохо знаком. Чуть больше с питоном.
Так же сказали не использовать полиморфизм и наследование. Только инкапсуляция.
Shaman
Перегрузка операторов.
AsphaltHero
Shaman
Перегрузка операторов.
Спасибо. Натолкнуло на правильные мысли)
Если кто-нибудь еще что-то подскажет буду очень благодарен
AsphaltHero

class Operation:

def plus(self, x, y):
print ( x + y)

def minus(self, x, y):
print( x - y)

def umnoj(self, x, y):
print (x * y)

def delenie(self, x, y):
print (x / y)

def modul(self, x, y):
print (abs(7 + 8j))

def stepen(self, x, y):
print (pow(x + y, 2))


obj1 = Operation()
x = complex(5, 6)
y = complex(7, 8)
obj1.plus(x, y)
obj1.minus(x, y)
obj1.umnoj(x, y)
obj1.modul(x, y)
obj1.delenie(x, y)
obj1.stepen(x, y)

Я думаю, что это задание сделал. Дальше надо: Дан массив комплексных чисел А. Получить массив С, элементами которого являются модули сумм рядом стоящих комплексных чисел. Можете подсказать, как быть дальше? Может быть вместо массива использовать список? И как мне его заполнить комплексными числами используя мой класс?
Rodegast
Нифига ты его не сделал. У тебя должно быть что то вроде:
 class KompleksInt(object):
    def __init__(self, d, m):
           self._i = m  # Мнимая часть
           self._n = d  # Вещественная часть
   
    def __add__(self, kInt):
           return KompleksInt(kInt._n +self._n, kInt._i + self._i)
Короче читай https://pythonworld.ru/osnovy/peregruzka-operatorov.html
py.user.next
AsphaltHero
Реализовать в виде класса набор подпрограмм, для выполнения следующих операций над комплексными числами

Сложение
Вычитание
Умножение
Деление
Вычисление модуля комплексного числа
Возведение комплексного числа в степень n(n-натуральное).
Библиотеки по заданию нужно использовать свои.

Прошу, кого не затруднит, можете пояснить задание?

Надо написать коплексное число. Потом надо написать вычислитель с операциями над комплексными числами этого типа. Это всё без всяких перегрузок надо сделать, просто методы.

AsphaltHero
Я думаю, что это задание сделал.
Ты использовал встроенные комплексные числа, а надо написать своё. Комплексное число - это просто пара вещественных чисел.

Один класс должен представлять комплексное число. Второй класс должен в методах принимать объекты первого класса и возвращать значения в виде таких же объектов (а в некоторых методах просто действительные числа).

AsphaltHero
Сказали писать или на C++, но если можешь на чем-то другом, то пожалуйста. С c++ пока плохо знаком.
Да, где-то может не быть комплексных чисел встроенных, но это не значит, что их нельзя там создать. Поэтому несмотря на наличие встроенных комплексных чисел в питоне, надо именно задание выполнить, реализовав их по-своему.
AsphaltHero
Rodegast
py.user.next
Вот что вышло в итоге. Есть ли замечания? Я вас правильно понял?
 class ComplexInt(): 
 def __init__(self, n): 
 self.n = n 
 
 def __add__(self, cInt): 
 return ComplexInt(self.n + cInt.n) 
 
 def __sub__(self, cInt): 
 return ComplexInt(self.n - cInt.n) 
 
 def __mul__(self, cInt): 
 return ComplexInt(self.n * cInt.n) 
 
 def __truediv__(self, cInt): 
 return ComplexInt(self.n / cInt.n) 
 
 def __abs__(self): 
 return ComplexInt(abs(self.n)) 
 
 def __pow__(self, y): 
 return ComplexInt(self.n ** y) 
 
 def __str__(self): 
 return str(self.n) 
 
A = [] 
C = [] 
 
for i in range(1, 10): 
 obj = ComplexInt(i+i*1j) 
 new_element = obj.n 
 A.append(new_element) 
print(A) 
 
for i in range(len(A)): 
 if i == 0: 
 C.append(abs(A[i+1])) 
 elif i == (len(A)-1): 
 C.append(abs(A[i-1])) 
 else: 
 C.append(abs(A[i-1]+A[i+1])) 
 
print(C)

Если все ок, прошу вас так же пояснить насчёт задания 2. Тут что-то вообще ничего не понятно. У меня же одна строка) Как быть-то?
JOHN_16
AsphaltHero
код нужно оформлять в специальных тегах code - вы же видите при постинге форматрование теряется
AsphaltHero
Тяжело, когда тупой. Спасибо)
JOHN_16
AsphaltHeroкод нужно оформлять в специальных тегах code - вы же видите при постинге форматрование теряется
py.user.next
AsphaltHero
Я вас правильно понял?
Надо два класса написать: один - само число, другой - калькулятор над такими числами. Ты написал мешанину из магических методов. Эти методы являются синтаксическим сахаром, не более. Калькулятор может выполнять больше всяких операций, среди них может и не быть стандартных. В других языках (C++ и не только) нет таких встроенных методов и надо всё писать однообразно.

  
>>> class Complex:
...     def __init__(self, real, imag):
...         self.real = real
...         self.imag = imag
...     def __str__(self):
...         sign = '+' if self.imag >= 0 else ''
...         return '{}{}{}i'.format(self.real, sign, self.imag)
...     __repr__ = __str__
... 
>>> class ComplexCalc:
...     def add(self, c1, c2):
...         real = c1.real + c2.real
...         imag = c1.imag + c2.imag
...         return Complex(real, imag)
...     def sub(self, c1, c2):
...         real = c1.real - c2.real
...         imag = c1.imag - c2.imag
...         return Complex(real, imag)
...     def mul(self, c1, c2):
...         real = c1.real * c2.real - c1.imag * c2.imag
...         imag = c1.imag * c2.real + c1.real * c2.imag
...         return Complex(real, imag)
...     def abs(self, c):
...         return (c.real ** 2 + c.imag ** 2) ** 0.5
... 
>>> calc = ComplexCalc()
>>> calc.add(Complex(1, 2), Complex(3, 4))
4+6i
>>> calc.sub(Complex(1, 2), Complex(3, 4))
-2-2i
>>> calc.mul(Complex(1, 2), Complex(3, 4))
-5+10i
>>> calc.abs(Complex(3, 4))
5.0
>>>
Операции можешь напрямую взять здесь
wiki. complex number
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB