//Tab1 = tablica przechowujaca wielomian poczatkowy //Tab2 = tablica przechowujaca wielomian wynikowy, oraz reszte z dzielenia w Tab2[0] //Pierw = pierwiastek wielomianu, przez ktory wykonane zostanie dzielenie //program wykona schemat Hornera dla dzialania: // Tab1 = (x - Pierw) * Tab2
var I : Integer; St: Integer; Tab1: Array[0..N_MAX] of Real; //wspolczynniki wielomianu wyjsciowego Tab2: Array[0..N_MAX] of Real; //wspolczynniki wielomianu wynikowego Pierw: Real; begin //przygotowanie tablicy for I := 0 to N_MAX do begin Tab1[I] := 0; end;
write('Podaj stopien wielomianu (nie wiekszy niz ', N_MAX, '):'); readln(St);
//wczytanie wspolczynnikow wielomianu poczatkowego for I := 0 to St do begin write('Podaj wspolczynnik przy x^',I,':'); readln(Tab1[I]); end;
program Horner;
const N_MAX = 10;
//Tab1 = tablica przechowujaca wielomian poczatkowy
//Tab2 = tablica przechowujaca wielomian wynikowy, oraz reszte z dzielenia w Tab2[0]
//Pierw = pierwiastek wielomianu, przez ktory wykonane zostanie dzielenie
//program wykona schemat Hornera dla dzialania:
// Tab1 = (x - Pierw) * Tab2
var
I : Integer;
St: Integer;
Tab1: Array[0..N_MAX] of Real; //wspolczynniki wielomianu wyjsciowego
Tab2: Array[0..N_MAX] of Real; //wspolczynniki wielomianu wynikowego
Pierw: Real;
begin
//przygotowanie tablicy
for I := 0 to N_MAX do begin Tab1[I] := 0; end;
write('Podaj stopien wielomianu (nie wiekszy niz ', N_MAX, '):');
readln(St);
//wczytanie wspolczynnikow wielomianu poczatkowego
for I := 0 to St do
begin
write('Podaj wspolczynnik przy x^',I,':');
readln(Tab1[I]);
end;
write('Podaj pierwiastek dwumianu:');
readln(Pierw);
//wykonanie obliczenia
Tab2[St] := Tab1[St];
for I := St - 1 downto 0 do
begin
Tab2[I] := Tab2[I+1] * Pierw + Tab1[I];
end;
//prezentacja wyniku
for I := St downto 0 do
begin
writeln (Tab1[I]:8:2,' x^',I);
end;
writeln('=');
writeln('x-(',Pierw:5:2,')');
writeln('*');
for I := St downto 1 do
begin
writeln (Tab2[I]:8:2,' x^',I-1);
end;
writeln('Reszta ', Tab2[0]:8:2);
end.
Dla przykladu:
x^3 + x^2 - 10 x + 8 = (x - 2) * (x^2 + 3x - 4)
Podaj stopien wielomianu (nie wiekszy niz 10):
Podaj wspolczynnik przy x^0:8
Podaj wspolczynnik przy x^1:-10
Podaj wspolczynnik przy x^2:1
Podaj wspolczynnik przy x^3:1
Podaj pierwiastek dwumianu:2
1.00 x^3
1.00 x^2
-10.00 x^1
8.00 x^0
=
x-( 2.00)
*
1.00 x^2
3.00 x^1
-4.00 x^0
Reszta 0.00