Witam,
Musze zaimplementować klasę Wielomian i podstawowe operacje na niej między innymi minus i plus unarny. Domyślam się, że jeśli chodzi o minus to stawiam minus przed całym wielomianem czyli zamieniam wszystkie znaki na przeciwne. Problem mam z plusem... bo nie bardzo wiem co on ma robić, stawiając plus przed całością nic on nie wniesie, czy źle rozumuję?
Proszę o pomoc.
Może plus unarny ma zmienić wszystkie znaki na plus? (unarny plus)(2-3x) = 2+3x
A może zwyczajnie nic nie powinien robić?
+1
to wciąż 1
.
http://www.wolframalpha.com/input/?i=%2B%28%28%2B1%29%2B%28%2B2%29%29
Operacja matematyczna na matematycznym obiekcie powinna być zgodna z matematyką. Plus nic nie robi i tak powinno być, minus powoduje zmianę znaków na przeciwne. Takie jest moje zdanie.
Jedyne co unarny plus robi np. w C/C++ to promocja typu, w tym przypadku jednak nie ma to chyba znaczenia.
aha, czyli dobrze myślałem;) Dzięki;)
o widze ze UMCS to i ja się podepne, te samo zadanie tylko podpunkt inny musze napisac funkcje:
def repr(self):
#reprezentacja Pythonowa, a więc taka, by można było
#wykonać na niej 'eval' po to, by dostać taki sam
#wielomian z powrotem
prosiłbym o łopatologiczne wyjaśnienie co ta funkcja ma robić
Taaa, UMCS pozdrawia! :D
chodzi o taką reprezentację, która po wpisaniu w kod(tzn w f. eval()) da poprawne działanie. to znaczy wielomian (1+22+33) ma wyglądać jakoś tak: 1+(22)+(33).
Przynajmniej ja tak to zrozumiałem ;)
kurde :P (1+22+33) ma wyglądać jakoś tak: 1+(2 ** 2)+(3 ** 3).
Jednoargumentowy plus może coś robić, co nie znaczy że powinien.
Czasami operatory robią zupełnie co innego niż oznaczają, np. operatory przesunięć bitowych w strumieniach (cout <<
).
Można sobie wyobrazić klasę, w której unarny + będzie miał znaczenie zupełnie nie związane z arytmetyką.
Chyba nawet widziałem coś takiego w Boost.Spirit.