ALG)9

ALG)9



13.1. Kodowanie danych i arytmetyka dużych liczb 299

(

int w[n]-{1,4,-2,O,7(; // współczynniki wielomianu cout << oblicz_wielomianl(2,w,n) << endl; cout << oblicz_wielomian2(2,w,n) << endl/ ł

Przy użyciu reprezentacji tablicowej, nieskomplikowane staje się również dodawanie i mnożenie wielomianów:

wielom.cpp

void dodaj_wiel(int x[],int y[],int z[], int rozm)

(

for(int i=0;i<rozm;i++!

z[i]-x[i]+y[i] ;    // wielomian z-x+y

)

void mnoz_wiel(int x[],int y[],int z[), int rozm)

I

int i,j;

for(i=0; i<2*rozm-l; i++i

z[i]=0;    // zerowanie rezultatu

// wielomian z=x*y for(i=0;i<rozm;i++)

for{i =0;jcrozm;j++!

z[i+j]=z[i+j] + x[i]*y[j);

)

Zacytowane powyżej algorytmy sa bezpośrednim tłumaczeniem praktycznych sposobów znanych nam ze szkoły podstawowej lub średniej. Co jest ich podstawową wadą? Otóż to, co wydawało nam się zaletą: reprezentacja tablicowa (a więc prosty dostęp do współczynników)! Jest ona mało ekonomiczna, jeśli chodzi o zużycie pamięci, o czym najlepiej niech świadczy próba pomnożenia następujących wielomianów:

(2xIAno + 3x9on) X (3x85 +1).

Owszem, można zarezerwować tablice o rozmiarach 1600, 85 i 1600+85 (na wynik), ale biorąc pod uwagę, że będą się one składały głównie z zer, nie jest to najrozsądniejszym pomysłem...

Na pomoc przychodzi tutaj reprezentacja wielomianu przy pomocy listy jednokierunkowej: wybierzemy najprostsze rozwiązanie, w którym nowe składniki wielomianu są dokładane na początek listy (użytkownik musi jednak pamiętać o wstawianiu nowych składników w określonej kolejności: od potęg najwyższych do najniższych lub odwrotnie). Nie będą zapamiętywane składniki zerowe:

wielom2.cpp

typedef struct W3p

I

int c; int j;


Wyszukiwarka

Podobne podstrony:
ALG)5 13.1. Kodowanie danych i arytmetyka dużych liczb 295 dencji, jednak w praktyce najczęstsze zas
ALG)7 13.1. Kodowanie danych i arytmetyka dużych liczb 297 liczby pierwsze 5, NI i N2 (typowo 100 cy
ALG01 13.1. Kodowanie danych i arytmetyka dużych liczb 301 whilo (x!-NULL,) I res=wstaw(res,x->c,
ALG)4 294 Rozdział 13. Kodowanie i kompresja danych jednak w przypadku zwykłych tekstów, zawierający
ALG)8 298 Rozdział 13. Kodowanie i kompresja danych W konsekwencji, jeśli będziemy interpretować duż
Problem A - Duże liczbyZadanie Napisz program podający wyniki operacji arytmetycznych dla dużych lic
ALG)6 296RozdziaH3. Kodowanie i kompresja danych nak jej praktyczna realizacja została opracowana pr
ALG00 300 Rozdział 13. Kodowanie i kompresja danych struct wsp *nastepny; }WSPÓŁCZYNNIKI, * WS
ALG02 302 Rozdział 13. Kodowanie i kompresja danych Podnoszenie do potęgi może być zrealizowane popr
ALG04 304 Rozdział 13. Kodowanie i kompresja danych 304 Rozdział 13. Kodowanie i kompresja danych Ry
ALG06 306Rozdział 13. Kodowanie i kompresja danych tekst zająłby 3x60=180 bitów. Popatrzmy teraz, ja
ALG08 308 Rozdział 13. Kodowanie i kompresja danych •    weź dwa znaki X i Y z najmni
Slajd12 (38) Różnice w reprezentacji danych Różna reprezentacja liczb całkowitych (np. uzupełnienie
page0926 91SŚredni — Średniki harmoniczną 5 Vl35 średnia arytmetyczna dwóch liczb jest zawsze większ
43284 Podstawy statystyki, ekonomiki i organizacji (13) PREZENTACJA DANYCH STATYSTYCZNYCH 1 PREZENTA
13 Co łączy umysł z teorią liczb? 8. PRZYKŁADY PODOBNYCH ZAGADNIEŃ W dotychczasowym tekście

więcej podobnych podstron