Class10:


Матрицы. Процедуры и функции.

1. Одинаковы ли типы?
array [1..15,0..3] of char
array [1..15] of array [0..3] of char

2. type STR = array [1..20] of char;
MATR1 = array [1..10] of STR;
MATR2 = array [1..15,1..20] of char;
var A: MATR1;
B, C: MATR2;
T: boolean;
X: STR;
a) Укажите тип переменных A, A[3], A[9][8], A[1,1], B, B[15], B[3,3], B[2][6]
b) Какие из указанных операций допустимы:
B:=C;
B:=B+C;
T:=B<>C;
A[1]:=A[8];
X:=A[3];
C[5]:=X;
C[5]:=C[1];

3. Напишите процедуру Input(A) для заполнения массива целых чисел A размером 10 x 10:
0 0 0 ... 0
0 1 0 ... 0
0 0 2 ... 0
...
0 0 0 ... 9

4. type VECTOR = array [1..20] of integer;
MATRIX = array [1..20] of VECTOR;
MATRIX1 = array [1..20,1..20] of integer;
var A: MATRIX;
X: VECTOR;
B: MATRIX1;
a) Напишите процедуру Change(A,X), заменяющую нечетные строки матрицы А на Х.
b) Напишите процедуру Change(B,X), заменяющую четные столбцы матрицы B на X.
c) Напишите процедуру Move(A), меняющую местами 1 и 2 строки, 3 и 4, ..., 19 и 20, используя массив X как вспомогательный буфер.
d) Напишите аналогичную процедуру для B.

5. Разберите пример.
const n=10;
type matr = array[0..n, 0..n] of integer;
Функция Max(A: matr): real; Определяет максимальный элемент матрицы в заштрихованной области

function max(a : matr) : integer;
var m, i, j : integer;
begin
m := a[0,0];
for i := 0 to n do
for j := 0 to abs((n div 2)-i)-1 do
begin
if (a[i,j] > m) then m := a[i,j];
if (a[i,n-j] > m) then m := a[i,n-j];
end;
max := m;
end;