Цитата:
Сообщение от 11Angelav
Я что-то тут намудрила, исправьте пожалуйста.
|
Ох, Анжелика - достали-таки с этими "динамиками"!
Ну а вот что я "намудрил". Хотя честно предупреждал - в динамических размещениях я, по большому счету "не копенгаген"
. А потому вот это требование: "При этом, если ai=0, то соответствующий член не включать в память" выше моего разумения - тут надо вводить "обратные связи", перелопачивать адресацию и пр. Нет уж, увольте. Ну а так, без этого, вроде работает:
Код:
{$R-}
type
intmas=array [0..0] of integer;
T=^intmas;
B=^Byte;
var
a:T;
i,k,N:integer;
x:B;
S:char;
Function P(z:B; c:T; M:Integer):Real;
Var
q:Integer;
R,D:real;
begin
R:=c^[0];
D:=1;
For q:=1 to M do
begin
D:=D*z^;
R:=R+c^[q]*D;
end;
P:=R;
end;
Begin
Write('N= ');
Readln(N);
GetMem(a, SizeOf(Integer)*(N+1));
For i:=0 to N do
begin
Write('a[',i,']= ');
Readln(a^[i]);
end;
New(x);
Write('Enter the symbol: ');
Readln(S);
x^:=Ord(S);
Writeln('P= ',P(x,a,N):0:3);
FreeMem(a, SizeOf(Integer)*(N+1));
Dispose(x);
Readln;
End.
Замечание: поскольку коды символов - трехзначные числа, большие степени полинома не ставьте, ограничьтесь N=(2-3), ну или задавайте нулевые коэффициенты при больших степенях, а то рискуете вылететь за разрядную сетку.