Конспект лекций по программированию для начинающих. Гладков В.П. - 164 стр.

UptoLike

Составители: 

166
j:=j-1;
i:=i+1
end;
if odd(n) then b[n]:=a[j].
Можно решить пример 11.27, перебирая элементы исходного массива. В этом
случае индекс выходного массива будет изменяться с шагом 2. Сначала этот
индекс должен быть четным и возрастать, так как начальные элементы массива а
располагаются на четных местах в порядке возрастания. После того, как индекс
выходного массива превысит n, он должен принять нечетное
значение и
уменьшаться с шагом 2 до 1. Соответствующая программа приведена ниже.
k:=2;
h:=2; {шаг изменения индекса выходного массива}
for i:=1 to n do
begin b[k]:=a[i];
k:=k+h;
if k>n then begin
if n mod 2=0
then k:=n-1
else k:=n;
h:=-2
end
end.
Упражнение. Постройте программу на основе перебора элементов исходного
массива, но выбрав схему перебора по одному элементу от последнего к первому.
Пример 11.28. Многочлен степени n a
n
x
n
+a
n-1
x
n-1
+...+a
1
x+a
0
от одной
переменной можно представить одномерным массивом коэффициентов этого
многочлена, описанным следующим образом:
const nn=100; { максимальная степень многочлена равна 100 }
type polinom=array [0..nn] of real;
var a,b:polinom; { a и b многочлены, свободные члены хранятся в
элементах a[0] и b[0], a[i] и b[i] - коэффициенты при x в i-той степени}
n:integer; { степень многочлена }
Массивом а задан многочлен степени n. Массивом b задан многочлен степени
m. Получить в массиве с результат
умножения заданных многочленов.
Например, заданы многочлены: n=2, 3x
2
+2x-1 и m=3, 4x
3
-5x
2
+6x-7. Их
произведение является многочленом степени n+m=2+3=5. Его можно получить
следующим образом:
(3x
2
+2x-1)(4x
3
-5x
2
+6x-7)=
=12x
5
-15x
4
+18x
3
-21x
2
+
+ 8x
4
-10x
3
+12x
2
-14x +
- 4x
3
+ 5x
2
- 6x +7 =
=12x
5
- 7x
4
+ 4x
3
- 4x
2
-20x +7 .
Для получения произведения нужно каждый одночлен первого многочлена
(обозначим его i) умножить на каждый одночлен второго многочлена (обозначим
его j). В результате получится одночлен, в котором неизвестная будет в степени i+j.
Останется привести подобные члены и получится результат. Подобные можно
                                         166

             j:=j-1;
             i:=i+1
    end;
    if odd(n) then b[n]:=a[j].
    Можно решить пример 11.27, перебирая элементы исходного массива. В этом
случае индекс выходного массива будет изменяться с шагом 2. Сначала этот
индекс должен быть четным и возрастать, так как начальные элементы массива а
располагаются на четных местах в порядке возрастания. После того, как индекс
выходного массива превысит n, он должен принять нечетное значение и
уменьшаться с шагом 2 до 1. Соответствующая программа приведена ниже.
    k:=2;
    h:=2; {шаг изменения индекса выходного массива}
    for i:=1 to n do
    begin      b[k]:=a[i];
               k:=k+h;
               if k>n then begin
                                    if n mod 2=0
                                    then k:=n-1
                                    else k:=n;
                                    h:=-2
                              end
    end.
    Упражнение. Постройте программу на основе перебора элементов исходного
массива, но выбрав схему перебора по одному элементу от последнего к первому.
    Пример 11.28. Многочлен степени n anxn+an-1xn-1+...+a1x+a0 от одной
переменной можно представить одномерным массивом коэффициентов этого
многочлена, описанным следующим образом:
    const nn=100; { максимальная степень многочлена равна 100 }
    type polinom=array [0..nn] of real;
    var        a,b:polinom; { a и b многочлены, свободные члены хранятся в
               элементах a[0] и b[0], a[i] и b[i] - коэффициенты при x в i-той степени}
               n:integer; { степень многочлена }
    Массивом а задан многочлен степени n. Массивом b задан многочлен степени
m. Получить в массиве с результат умножения заданных многочленов.
    Например, заданы многочлены: n=2, 3x2+2x-1 и m=3, 4x3-5x2+6x-7. Их
произведение является многочленом степени n+m=2+3=5. Его можно получить
следующим образом:
    (3x2+2x-1)(4x3-5x2+6x-7)=
    =12x5 -15x4 +18x3 -21x2                              +
              + 8x4 -10x3        +12x2 -14x              +
                       - 4x3     + 5x2 - 6x +7           =
          5        4        3         2
    =12x      - 7x + 4x          - 4x     -20x +7        .
    Для получения произведения нужно каждый одночлен первого многочлена
(обозначим его i) умножить на каждый одночлен второго многочлена (обозначим
его j). В результате получится одночлен, в котором неизвестная будет в степени i+j.
Останется привести подобные члены и получится результат. Подобные можно