Viết chương trình cho phép chia hai đa thức để tìm đa thức thương và đa thức dư.

>> Viết chương trình cho phép nhân hai đa thức đã sắp xếp

>> Viết chương trình tính giá trị của đa thức A(x) với điều kiện không dùng biến mảng

Chương trình

Program Chia_da_thuc;

uses crt;

Type KM = array[0..10] of real;

Var A,B,C,AB,D: KM;

     i,n,cs,bc: byte;

Procedure NhapDT(Var A: KM; n:byte);

Var i: byte;

Begin

     For i:=n downto 0 do

     Begin Write('M[',i,']='); Read(A[i]);  End;

End;

Function BAC(A:KM;n:integer):Byte;

Var i:Byte;

Begin

    i:=n;

    While (A[i]=0) and (i> 0) do i:=i-1;

    BAC:=i;

End;


Procedure TRU(Var A:KM;B:KM;n:byte);

Var i: byte;

Begin

    For i:= 0 to n do A[i]:=A[i]-B[i];

End;

Procedure NHAN(Var C:KM;A,B:KM; Var n:byte);

Var i,j:byte;

    TAM:KM;

Begin

    n:=Bac(A,n)+Bac(B,n);

    For i:= 0 to 2*n do TAM[i]:=0;

    For i:= 0 to n do

       For j:=0 to n do TAM[i+j]:=TAM[i+j]+A[i]*B[j];

    For i:=0 to 2*n do C[i]:=TAM[i];

End;

Procedure INDT(A:KM;n:byte);

Var i: byte;

Begin

    if A[n] <> 0 then Write(A[n]:3:1,'x^',n);

    For i:=n-1 downto 0 do

     if A[i] <> 0 then

      if A[i] < 0 then write(A[i]:3:1,'x^',i) else Write('+',A[i]:3:1,'x^',i);

End;

Procedure DT_BAC(Var A:KM;Bac:byte;gt:real);

Var i:byte;

Begin

    For i:=1 to n do A[i]:=0;

    A[Bac]:=gt;

End;

Begin

     clrscr;

     Write('Nhap bac cua da thuc bi chia: ');Readln(n);

     Writeln('Nhap da thuc A: '); NhapDT(A,n);

     Writeln('Nhap da thuc B: '); NhapDT(B,n);

     clrscr;

     Write('Da thuc bi chia: ');Indt(A,n); Writeln;

     Write('Da thuc chia: ');Indt(B,n); Writeln;

     bc:=Bac(A,n)-Bac(B,n); {Luu bac cua da thuc C}

     For i:=1 to bc do C[i]:=0;

     While BAC(A,n) >= BAC(B,n) do

     Begin

         cs:=BAC(A,n)-BAC(B,n);

         C[cs]:=A[Bac(A,n)]/B[Bac(B,n)];

         Writeln('C[',cs,']=',C[cs]:3:1);

         DT_BAC(D,cs,C[cs]);Writeln;

         Write('Da thuc D:');

         Indt(D,n);

         NHAN(AB,B,D,n);Writeln;

         Write('Da thuc AB:');

         Indt(AB,n);Writeln;

         TRU(A,AB,n);

         Write('Da thuc A moi:');

         Indt(A,n);

     End;

     Writeln('Da thuc thuong: ');

     Indt(C,bc);

     Readln;

     Readln

End.