Na podstawie poprzednich części przygotowałem biblioteke wielomiany.h z której będę korzystać w dalszej implementacji.
Iloczyn wielomianów stopnia m i n jest stopnia m+n.
Definiujemy funkcję mnozWielomiany(), która przyjmie dwa argumenty: wielomian a i wielomian b. Jako wynik zwrócimy wskaźnik na nowy wielomian, który będzie iloczynem a i b.
(2.) Alokujemy pamięć na nowy wielomian. (3.) Korzystamy z twierdzenia o iloczynie wielomianów i ustalamy stopień nowego wielomianu.
(4.) Deklarujemy nową listę liczb rzeczywistych, która będzie przechowywać współczynniki nowego wielomianu. (5. - 6.) Wszystkie wartości na liście zerujemy.
Mnożenie wielomianu przez wielomian to pomnożenie każdego składnika z każdym. Zwykle trzeba potem uprościć wielomian dokonując redukcji. Cały proces będziemy rozpatrywać na samych współczynnikach, ponieważ w uproszczonej formie i-ty współczynnik to suma współczynników wszystkich składników (tj. jednomianów) tego samego stopnia.
(7.) Dla każdego elementu z jednomianu a i (8.) każdego elementu z jednomianu b zwiększamy odpowiedni stopień wielomianu wynikowego o iloczyn jednomianów na pozycji i w a i j w b. Przy ustalaniu, który współczynnik wyniku zwiększyć korzystamy z twierdzenia.
(10.) Nową listę przypisujemy do wielomianu. (11.) Zwracamy wielomian.
Definiujemy funkcję mnozWielomianxn_w_miejscu(), która będzie podnosiła stopień wielomianu mnożąc go przez xn. Jako argument przyjmuje wielomian w, stopień n zmiennej x. Funkcja nie zwraca nic: modyfikuje wielomian w miejscu.
(2.) Tworzymy nową listę współczynników. (3. - 4.) Przepisujemy dotychczasową listę na nową począwszy od indeksu 0. (5. - 6.) Pozostałe współczynniki zerujemy. (7.) Usuwamy dotychczasową tablicę współczynników. (8.) Zwiększamy stopień wielomianu. (9.) Przypisujemy nową listę do danego wielomianu.
Poniższa funkcja main() wczyta od użytkownika dwa wielomiany, wypisze je, a następnie wypisze na ekran wynik ich pomnożenia. Wynik zostanie później pomnożony przez xn.
Przykładowo dla:
program powinien wypisać na ekran:
Napisz funkcję mnozWielomianxn(), która będzie podobna do mnozWielomianxn_w_miejscu() z tą różnicą, że nie będzie modyfikować podanego wielomianu. Powinien zostać utworzony nowy wielomian, który będzie przechowywał wynik operacji, a funkcja powinna zwrócić wskaźnik na niego.