Klasa LiczbaZespolona
Treść zadania
Zaprojektuj klasę LiczbaZespolona opisującą liczbę zespoloną $a + bi$:
- konstruktor
__init__(self, re=0, im=0)— część rzeczywista i urojona, - operatory
+,-,*,/(metody__add__,__sub__,__mul__,__truediv__) zwracające nową liczbę zespoloną:- $(a + bi)(c + di) = (ac - bd) + (ad + bc)i$,
- $\frac{a + bi}{c + di} = \frac{ac + bd}{c^2 + d^2} + \frac{bc - ad}{c^2 + d^2}i$ (dzielnik jest różny od zera),
- porównanie
==(metoda__eq__) — liczby są równe, gdy mają równe części rzeczywiste i urojone, - metodę
modul()zwracającą moduł liczby: $|a + bi| = \sqrt{a^2 + b^2}$, - metodę
__str__()zwracającą napisa + bialboa - bi(gdy część urojona jest ujemna, wypisz minus i jej wartość bezwzględną). Obie części wypisz z dokładnością do 2 miejsc po przecinku, np.9.00 + 12.00i,-3.00 - 3.00i.
Program wczytuje liczby $A$ i $B$ i wypisuje wyniki działań.
Dane wejściowe
- 1. linia: dwie liczby całkowite — część rzeczywista i urojona liczby $A$
- 2. linia: dwie liczby całkowite — część rzeczywista i urojona liczby $B$
Dane wyjściowe
Osiem linii:
Liczba A: <A>
Liczba B: <B>
Suma: <A + B>
Różnica A - B: <A - B>
Iloczyn: <A * B>
Iloraz A / B: <A / B>
Moduł liczby A: <|A|>
Liczby są równe.
- Jeśli $B = 0 + 0i$, zamiast ilorazu wypisz
Iloraz A / B: nie można dzielić przez zero. - Moduł wypisz z dokładnością do 2 miejsc po przecinku.
- W ostatniej linii wypisz
Liczby są równe.alboLiczby są różne.
Ograniczenia
- Części rzeczywiste i urojone są liczbami całkowitymi z przedziału $[-100, 100]$.
Przykład
9 12 -3 -3
Liczba A: 9.00 + 12.00i Liczba B: -3.00 - 3.00i Suma: 6.00 + 9.00i Różnica A - B: 12.00 + 15.00i Iloczyn: 9.00 - 63.00i Iloraz A / B: -3.50 - 0.50i Moduł liczby A: 15.00 Liczby są różne.
Iloczyn: $(9 + 12i)(-3 - 3i) = (-27 + 36) + (-27 - 36)i = 9 - 63i$.
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 18
Zadania w tym rozdziale uczą projektowania klas: konstruktora __init__, atrybutów, metod, metod statycznych (@staticmethod) oraz metod specjalnych, dzięki którym obiekty można wypisywać (__str__), porównywać (__eq__) i łączyć operatorami (__add__, __sub__, __mul__, …). Ostatnie zadania wprowadzają też wyjątki (raise, try/except), klasy danych (@dataclass) i generatory (yield).
Konwencje wspólne:
- Każde zadanie to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- W każdym zadaniu dostajesz kod startowy ze szkieletem klasy, a zwykle także z gotowym wczytywaniem danych i wypisywaniem wyników. Twoim zadaniem jest przede wszystkim uzupełnienie metod klasy — wynik programu zależy od tego, jak działa Twoja klasa.
- Nazwy klas i metod podane w treści są obowiązkowe (kod startowy z nich korzysta). Nazwy w kodzie piszemy bez polskich znaków, np.
Kolo,Prostokat. - „Z dokładnością do 2 miejsc po przecinku” oznacza dokładnie dwie cyfry po kropce, np.
f"{x:.2f}"(3.00,-0.50). - Program nie wypisuje komunikatów typu „Podaj liczbę:”.
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomiono1 1 1 1
Liczba A: 1.00 + 1.00i Liczba B: 1.00 + 1.00i Suma: 2.00 + 2.00i Różnica A - B: 0.00 + 0.00i Iloczyn: 0.00 + 2.00i Iloraz A / B: 1.00 + 0.00i Moduł liczby A: 1.41 Liczby są równe.
Test 2
Nie uruchomiono3 4 0 0
Liczba A: 3.00 + 4.00i Liczba B: 0.00 + 0.00i Suma: 3.00 + 4.00i Różnica A - B: 3.00 + 4.00i Iloczyn: 0.00 + 0.00i Iloraz A / B: nie można dzielić przez zero Moduł liczby A: 5.00 Liczby są różne.
Test 3
Nie uruchomiono0 0 2 -1
Liczba A: 0.00 + 0.00i Liczba B: 2.00 - 1.00i Suma: 2.00 - 1.00i Różnica A - B: -2.00 + 1.00i Iloczyn: 0.00 + 0.00i Iloraz A / B: 0.00 + 0.00i Moduł liczby A: 0.00 Liczby są różne.
Test 4
Nie uruchomiono5 -2 -1 3
Liczba A: 5.00 - 2.00i Liczba B: -1.00 + 3.00i Suma: 4.00 + 1.00i Różnica A - B: 6.00 - 5.00i Iloczyn: 1.00 + 17.00i Iloraz A / B: -1.10 - 1.30i Moduł liczby A: 5.39 Liczby są różne.
Test 5
Nie uruchomiono-4 0 0 2
Liczba A: -4.00 + 0.00i Liczba B: 0.00 + 2.00i Suma: -4.00 + 2.00i Różnica A - B: -4.00 - 2.00i Iloczyn: 0.00 - 8.00i Iloraz A / B: 0.00 + 2.00i Moduł liczby A: 4.00 Liczby są różne.