Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модуль Многочлены.docx
Скачиваний:
2
Добавлен:
08.12.2018
Размер:
32.57 Кб
Скачать

Implementation // ћїЁб ­ёґ дг­ЄжЁ© (ђҐ «ё§ жЁп)

PROCEDURE PolySum(a,b: RealPtr; n,m: WORD; c: RealPtr);

VAR

I: word;

aa,bb,cc: RealPtr;

BEGIN

aa := a;

bb := b;

cc := c;

IF n > m THEN

BEGIN

FOR i := 0 TO m DO

BEGIN

a := aa;

b := bb;

c := cc;

inc(a,i);

inc(b,i);

Inc(c,i);

c^ := a^+b^

END;

FOR i := m+1 TO n DO

BEGIN

a := aa;

c := cc;

inc(a,i);

Inc(c,i);

c^ := a^

END

END

ELSE

BEGIN

FOR i := 0 TO n DO

BEGIN

a := aa;

b := bb;

c := cc;

inc(a,i);

inc(b,i);

Inc(c,i);

c^ := a^+b^

END;

FOR i := n+1 TO m DO

BEGIN

b := bb;

c := cc;

inc(b,i);

Inc(c,i);

c^ := b^

END

END

END;

PROCEDURE PolySub(a,b: RealPtr; n,m: WORD; c: RealPtr);

VAR

I: word;

aa,bb,cc: RealPtr;

BEGIN

aa := a;

bb := b;

cc := c;

IF n > m THEN

BEGIN

FOR i := 0 TO m DO

BEGIN

a := aa;

b := bb;

c := cc;

inc(a,i);

inc(b,i);

Inc(c,i);

c^ := a^-b^

END;

FOR i := m+1 TO n DO

BEGIN

a := aa;

c := cc;

inc(a,i);

Inc(c,i);

c^ := a^

END

END

ELSE

BEGIN

FOR i := 0 TO n DO

BEGIN

a := aa;

b := bb;

c := cc;

inc(a,i);

inc(b,i);

Inc(c,i);

c^ := a^-b^

END;

FOR i := n+1 TO m DO

BEGIN

b := bb;

c := cc;

inc(b,i);

Inc(c,i);

c^ := -b^

END

END

END;

PROCEDURE PolyMult(a,b: RealPtr; n,m: WORD; c: RealPtr);

VAR

I,k: word;

aa,bb,cc: RealPtr;

BEGIN

aa := a;

bb := b;

cc := c;

{-------------------------------------------}

If n >= m then begin

{-------------------------------------------}

FOR k := 0 to m do

BEGIN

c := cc;

Inc(c,k);

c^ := 0;

FOR i := 0 TO k DO

BEGIN

a := aa;

b := bb;

inc(a,i);

inc(b,k-i);

c^ := c^ + a^ * b^

END

END;

FOR k := m+1 TO m+n DO

BEGIN

c := cc;

Inc(c,k);

c^ := 0;

FOR i := 1 TO k-m DO

BEGIN

a := aa;

b := bb;

inc(a,k-m+1-i);

inc(b,i);

c^ := c^ + a^ * b^

END

END

{-------------------------------------------}

end else begin

{-------------------------------------------}

FOR k := 0 TO n DO

BEGIN

c := cc;

Inc(c,k);

c^ := 0;

FOR i := 0 TO k DO

BEGIN

a := aa;

b := bb;

inc(a,k-i);

inc(b,i);

c^ := c^ + a^ * b^

END

END;

FOR k := n+1 TO n+m DO

begin

c := cc;

Inc(c,k);

c^ := 0;

FOR i := 1 TO k DO

BEGIN

a := aa;

b := bb;

inc(a,i);

inc(b,k-n+1-i);

c^ := c^ + a^ * b^

END

END

{-------------------------------------------}

END

{-------------------------------------------}

END;

PROCEDURE PolyCutOne (n:WORD; k: RealPtr; v:WORD; VAR stl: WORD; p: RealPtr);

VAR