Показать сообщение отдельно
Старый 04.12.2012, 10:04   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от 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), ну или задавайте нулевые коэффициенты при больших степенях, а то рискуете вылететь за разрядную сетку.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070