Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
01.05.2014
Размер:
4.35 Кб
Скачать
{========= ЇаЁ¬Ґа : Їа®жҐ¤гал ®Ўа Ў®вЄЁ ¬ ббЁў®ў ==========}
{ „ ­®: Ї®«Ё­®¬ Ї®ап¤Є  n б Є®нддЁжЁҐ­в ¬Ё a [1..n]: }
{ p(n,a[1..n];x) = a[1] + a[2]*x + a[3]*x^2 +...+ a[n]*x^(n-1)}
{ ’ॡгҐвбп: Ї®«гзЁвм ўбҐ Їа®Ё§ў®¤­лҐ (®в 1-© ¤® (n-1)-©) }
{ Ёб室­®Ј® Ї®«Ё­®¬ . }
{ Ћб­®ў­®Ґ ᮮ⭮襭ЁҐ ¤«п Є®нддЁжЁҐ­в®ў Ї®«Ё­®¬ -Їа®Ё§ў®¤­®©:}
{ (ALL i: 1<=i<=(n-1) : b[i] = i*a[i+1] ), }
{ Ј¤Ґ b[*] - Є®нддЁжЁҐ­вл Ї®«Ё­®¬ -Їа®Ё§ў®¤­®© Ёб室­®Ј® я }
{ Ї®«Ё­®¬  c Є®нддЁжЁҐ­в ¬Ё a[*] }
{ ============================================================}

const MaxOrder = 10 ;
type OrderPoly = 1..MaxOrder;
index = OrderPoly;
CoefPoly = array [index] of Real;

var n : OrderPoly; { Ї®а冷Є Ёб室­®Ј® Ї®«Ё­®¬  }
j : index; { ­®¬Ґа Їа®Ё§ў®¤­®© }
a : CoefPoly; { ¬ ббЁў Є®нддЁжЁҐ­в®ў }
fout: Text; { ўл室­®© д ©« Ё«Ё нЄа ­ }
ch : Char;
{------------------------------------------------------------}
procedure DiffPoly ( n : OrderPoly; var a : CoefPoly );
{ ўлзЁб«Ґ­ЁҐ Їа®Ё§ў®¤­®© Ї®«Ё­®¬  }
{  аЈ : n - Ї®а冷Є Ёб室­®Ј® Ї®«Ё­®¬ ; }
{  аЈ-१ : }
{ - ЇаЁ ўе®¤Ґ a[1..n] - Є®нддЁжЁҐ­вл Ёб室­®Ј® Ї®«Ё­®¬ }
{ - ЇаЁ ўл室Ґ a[1..n-1] - Є®нд-вл Ї®«Ё­®¬ -Їа®Ё§ў®¤­®© }
var
i : index;
begin
{ a[1..n]=A[1..n] & n>1 }

for i:=1 to n-1 do
a[i] := i*a[i+1];

{ (ALL i: 1<=i<=(n-1) : a[i]=i*A[i+1] ) & (a[n]=A[n]) }
end { DiffPoly };
{------------------------------------------------------------}
procedure OutPoly ( n: OrderPoly; var a: CoefPoly;
var fout: Text);
{  аЈ : n, a ; १ : fout }
{ ў­Ґи­Ё© нд䥪в: ўлў®¤ ў д ©« fout }
var
i : index;
begin
for i:=1 to n do
WriteLn( fout, '(', a[i] :13,') * x^', (i-1) :1 )

end { OutPoly };
{------------------------------------------------------------}
procedure InCorrPoly ( var n : OrderPoly; var a: CoefPoly;
var fout : Text);
{ ўў®¤, Їа®ўҐаЄ  Є®а४⭮бвЁ Ё ўлў®¤ Ї а ¬Ґва®ў Ї®«Ё­®¬  }
{  аЈ : ­Ґв ; १ : n, a, fout }
{ ў­Ґи­Ё© нд䥪в: ўлў®¤ ў д ©« fout }
var i : index;
Cor: Boolean;
begin
{====== ўў®¤ n ======}
repeat
WriteLn('ўўҐ¤ЁвҐ Ї®а冷Є Ї®«Ё­®¬  [2..',MaxOrder,'] :');
{$R-} {Ї®Їа®Ўг©вҐ Ё б $R+}
ReadLn( n );
{нв®в да Ј¬Ґ­в - ЇаЁ ®вЄ«о祭­®© ®ЇжЁЁ
Options/Compiler/Runtime errors/Range checking -
б¬. 3 бва®Є ¬Ё ўлиҐ}
if ( 2<=n ) and ( n<=MaxOrder )
then Cor:= true
else
begin
Cor:= false;
WriteLn( '‚л ®иЁЎ«Ёбм Ё ўўҐ«Ё n =',n);
Write('‚­®ўм ')
end { if }
until Cor;
{====== ўў®¤ Є®нддЁжЁҐ­в®ў ======}
WriteLn( 'ўўҐ¤ЁвҐ Є®нддЁжЁҐ­вл');
for i:=1 to n do
begin
Write('ЇаЁ б⥯Ґ­Ё x^', (i-1) :1, ':');
ReadLn( a[i] )
end { for };
{====== ўлў®¤ Ї®«Ё­®¬  ======}
WriteLn( fout, 'ўўҐ¤Ґ­ Ї®«Ё­®¬ Ї®ап¤Є  ', n, ' :');
OutPoly( n, a, fout );
WriteLn('ў ў ® ¤ ¤   ­ ­ л е §   ў Ґ а и Ґ ­ ! [‚Љ]');
ReadLn { ­ ¦ вм ‚Љ }
end { InCorrPoly };
{------------------------------------------------------------}
begin { main }
Write('ўлў®¤ ў д ©« ["¤ " - Y Ё«Ё y / "­Ґв" - «оЎ®© ¤агЈ®© бЁ¬ў®«] ?');
ReadLn( ch );
if UpCase(ch)='Y'
then Assign( fout, 'OUTPOLY.DAT')
else Assign( fout, 'CON' );
Rewrite( fout );

InCorrPoly( n, a, fout );

WriteLn(fout,'**** ¤ЁддҐаҐ­жЁа㥬 Ёб室­л© Ї®«Ё­®¬ ****');
for j:=1 to n-1 do
begin
{¤Ёдд-Ґ¬ Ї®«Ё­®¬ Ї®ап¤Є  n-j+1 б Є®нд-¬Ё a[1..(n-j+1)]}
DiffPoly( n-j+1, a );
{ १: Ї®«Ё­®¬ Ї®ап¤Є  n-j б Є®нд-¬Ё a[1.. (n-j) ]}
WriteLn( fout, j, '-п Їа®Ё§ў®¤­ п :');
OutPoly( n-j, a, fout );
WriteLn( fout,'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
end { for };
Close( fout )
end { main }.
Соседние файлы в папке Дифференцирование полинома