Система программирования Турбо Паскаль. Воробьева А.П - 54 стр.

UptoLike

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

109
Задача 4
Для заданных квадратных матриц:
33
}{
×
=
ij
aA и
44
}{
×
=
ij
bB
вычислить симметричные матрицы по правилу:
2
jiij
jiij
yy
xx
+
==
.
Вариант c процедурой
Program P4_P;
Type
matr = array[1..4, 1..4] of real;
Var
A, B, C, D: matr;
i, j: integer;
Procedure SM(Y: matr; n: integer; var X: matr);
var
i, j: integer;
begin
for i := 1 to n do
for j := i to n do
begin
x[i,j] := (y[i,j] + y[j,i])/2;
x[j,i] := x[i,j];
end;
end;
Begin
writeln(‘Введите матрицу A’);
for i := 1 to 3 do
for j := 1 to 3 do read(a[i,j]);
writeln(‘Введите матрицу В’);
for i := 1 to 4 do
for j := 1 to 4 do read(b[i,j]);
SM(A, 3, C);
SM(B, 4, D);
writeln(‘Симметричная матрица C’);
for i := 1 to 3 do
begin
for j := 1 to 3 do write(c[i,j]:6:2);
writeln;
end;
110
writeln(‘Симметричная матрица D’);
for i := 1 to 4 do
begin
for j := 1 to 4 do write(d[i,j]:6:2);
writeln;
end;
End.
Вариант c функцией
В задаче результатом вычисления подпрограммы является
массив (симметричная матрица). Чтобы оформить вариант про-
граммы с функцией, можно ввести фиктивный оператор, при-
сваивающий имени функции произвольное число, например
SM:=1;. В основной программе в этом случае объявляется фик-
тивная переменная (например,
L), которой присваивается значе-
ние функции. Такие действия необходимы для того, чтобы после
обращения к функции произошел возврат в основную программу
и продолжалось ее выполнение.
Program P4_F;
Type
matr = array[1..4, 1..4] of real;
Var
A, B, C, D: matr;
i, j, L: integer;
Function SM(Y: matr; n: integer; var X: matr): integer;
var
i, j: integer;
begin
for i := 1 to n do
for j := i to n do
begin
x[i,j] := (y[i,j] + y[j,i])/2;
x[j,i] := x[i,j];
end;
SM := 1;
end;
                                  Задача 4                                        writeln(‘Симметричная матрица D’);
    Для заданных квадратных матриц: A = {aij }3×3 и B = {bij }4×4                 for i := 1 to 4 do
                                                                                      begin
вычислить симметричные матрицы по правилу:                                                for j := 1 to 4 do write(d[i,j]:6:2);
                                         y ij + y ji                                      writeln;
                           xij = x ji =              .
                                              2                                       end;
Вариант c процедурой                                                             End.
            Program P4_P;
            Type                                                    Вариант c функцией
              matr = array[1..4, 1..4] of real;
            Var                                                         В задаче результатом вычисления подпрограммы является
              A, B, C, D: matr;                                     массив (симметричная матрица). Чтобы оформить вариант про-
              i, j: integer;                                        граммы с функцией, можно ввести фиктивный оператор, при-
            Procedure SM(Y: matr; n: integer; var X: matr);         сваивающий имени функции произвольное число, например
              var                                                   SM:=1;. В основной программе в этом случае объявляется фик-
                   i, j: integer;                                   тивная переменная (например, L), которой присваивается значе-
              begin                                                 ние функции. Такие действия необходимы для того, чтобы после
                   for i := 1 to n do                               обращения к функции произошел возврат в основную программу
                        for j := i to n do                          и продолжалось ее выполнение.
                            begin                                               Program P4_F;
                                x[i,j] := (y[i,j] + y[j,i])/2;                  Type
                                x[j,i] := x[i,j];                                matr = array[1..4, 1..4] of real;
                            end;                                                Var
              end;                                                               A, B, C, D: matr;
            Begin
                                                                                 i, j, L: integer;
              writeln(‘Введите матрицу A’);
                                                                                Function SM(Y: matr; n: integer; var X: matr): integer;
              for i := 1 to 3 do
                   for j := 1 to 3 do read(a[i,j]);                              var
              writeln(‘Введите матрицу В’);                                           i, j: integer;
              for i := 1 to 4 do                                                 begin
                   for j := 1 to 4 do read(b[i,j]);                                   for i := 1 to n do
              SM(A, 3, C);                                                                 for j := i to n do
              SM(B, 4, D);                                                                     begin
              writeln(‘Симметричная матрица C’);                                                   x[i,j] := (y[i,j] + y[j,i])/2;
              for i := 1 to 3 do                                                                   x[j,i] := x[i,j];
                   begin                                                                       end;
                        for j := 1 to 3 do write(c[i,j]:6:2);                         SM := 1;
                        writeln;                                                 end;
                   end;
                               109                                                                    110