Схема Горнера - Pascal (10276)

Узнай цену своей работы

Формулировка задачи:

Даны натуральное числа n, действительные числа x, y, an, bn, an-1, bn-1, ... , a0, b0. Вычислить по схеме Горнера значение многочлена с комплексными коэффициентами (an + ibn)(x + iy)n + (an-1 + ibn-1)(x + iy)n-1 + ... + (a0 + ib0). (Определить процедуры выполнения арифметических операций над комплексными числами.) (x + iy)n-1 - в степени n-1 Прошу помочь, потому что вообще не представляю что нужно делать.
Up..
up

Решение задачи: «Схема Горнера»

textual
Листинг программы
Program Gorner;
 
var
  y,x,f,e,m,l:real;
  i,k,j,n:integer;
  a,b:array[0..30] of real;
 
procedure AddC(x,y,a,b: real; var c,d: real);
begin
   c:= x + a;
   d:= y + b;
end;
procedure MulC(x,y,a,b: real; var c,d: real);
begin
   c:= x * a;
   d:= y + b;
end;
 
begin
     Writeln('BBeguTe x:');
     readln(x);
     writeln('BBeguTe y:');
     readln(y);
     m:=x;
     l:=y;
 
     writeln('Vvedite N:');
     readln(n);
     for i:=n downto 0 do
     begin
          writeln('Vvedite a[',i,']:');
          readln(a[i]);
     end;
 
     f:=0;
     e:=0;
     k:=n;
 
     for i:=n downto 0 do
     begin
          if i<>0 then
          begin
               x:=m;
               y:=l;
               for j:=1 to i-1 do MulC(x,y,m,l,x,y);
          end
          else
              x:=1;
 
          MulC(x,y,a[k],b[k],x,y);
          AddC(f,e,x,y,f,e);
          k:=k-1;
     end;
     Writeln('Otvet= ',f:2:2,'+i',e:2:2);
     readln;
end.

Объяснение кода листинга программы

  1. В начале программы объявляются переменные y, x, f, e, m, l типа real и переменные i, k, j, n типа integer. Также объявляется массив a[0..30] типа real.
  2. В процедуре AddC переменные c и d инициализируются суммой x и a, и суммой y и b соответственно.
  3. В процедуре MulC переменные c и d инициализируются произведением x и a, и y и b соответственно.
  4. В основной части программы считываются значения x, y, n и a[i] для i от 0 до n.
  5. Переменные f и e инициализируются нулем, а переменная k инициализируется значением n.
  6. Затем происходит цикл for, который выполняется n раз. Внутри цикла проверяется условие i<>0. Если оно истинно, то значения x и y считываются из предыдущих значений m и l, и выполняется вызов процедур MulC и AddC.
  7. Если условие i<>0 не выполняется, то значение x считывается равным 1, и выполняется вызов процедуры MulC и AddC с текущими значениями y, f и e.
  8. После завершения цикла k уменьшается на 1.
  9. В конце программы выводится ответ f и e.
  10. Программа завершается вызовом функции readln.

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы