Двовимірні масиви
Тема : Двовимірні масиви. Заповнення двовимірного масиву за заданим правилом.
Мета: відпрацювати навички роботи з елементами двовимірного масиву, навчитися заповнювати двовимірні масиви за заданим правилом, навчитися виводити залежність між номером рядка і номером стовпця; розвиток логічного мислення учнів.
1. Актуалізація знань
Масиви, положення елементів яких описується двома індексами, називаються двовимірними. Структура такого масиву може бути представлена прямокутною матрицею. Кожен елемент матриці однозначно визначається зазначенням номера рядка та шпальти, номер рядка – i, номер шпальти – j. Розглянемо матрицю розміром n*m:
| а11 | а12 | а13 | а14 |
| а21 | а22 | а23 | а24 |
| а31 | а32 | а33 | а34 |
Матриця з 3 рядків та 4 стовпців, кількість рядків n=3, кількість стовпців m=4. Кожен елемент має свій номер, який складається з двох чисел – номера рядка, в якому знаходиться елемент, та номери стовпця. Наприклад, а23 – це елемент, що стоїть у другому рядку та у третьому стовпці. Двовимірний масив мовою Турбо Паскаль можна описати по-різному. Щоб описати двовимірний масив, треба визначити якого типу його елементи, і як вони пронумеровані (якого типу його індекс). Існує кілька способів опису двовимірного масиву.
1 спосіб
Type Mas = array [1..maxN] of ; Type TMas = array [1..maxM] of Mas;
2 спосіб
Type TMas = array [1..maxN] of array [1..maxM] of ;
3 спосіб
Type = array [1..maxN, 1..maxM] of ;
Перевага надається третьому способу опису двовимірного масиву.
Const N=3; M=4; Type TMas= array [1..N, 1..M] of integer;
Формування двовимірного масиву можна здійснювати чотирма способами: введення з клавіатури через генератор випадкових чисел, за заданим правилом або за допомогою файлу.
1) Формування двовимірного масиву за допомогою введення з клавіатури та алгоритм рядкового виведення елементів матриці.
Const N = 10; M = 10; Type Tmas = array [1..N,1..M] of integer; Var A: Tmas; i,j:integer; Begin For i:=1 to N do For j:=1 to M do Read(A[i,j]); For i:=1 to N do begin For j:=1 to M do Write(A[i,j]:4); Writeln end; End.
2) Фрагмент програми формування двовимірного масиву через генератор випадкових чисел.
2. Вивчення нового матеріалу. Заповнення масиву за правилом
Розглянемо кілька фрагментів програм заповнення двовимірного масиву за деяким законом. Для цього необхідно вивести правило наповнення.
1. Заповнити масив А розміром n*m таким чином, наприклад
1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 17 18 19 20 21 22 23 24 32 31 30 29 28 27 26 263 39 40 48 47 46 45 44 43 42 41
Масив заповнюється за принципом "змійки". Правило заповнення: якщо номер рядка – непарне число, то A[i,j]=(i-1)*m+j, інакше A[i,j]=i*m-j+1.
program M1А; var A:array[1..100,1..100] of integer; n,m,i,j: integer; begin readln(n,m); для i: = 1 до n для початку для j: = 1 для m для begin іf mod 2 = 1 then A[i,j]=(i- 1)*m+j else A[i,j]=i*m-j+1; write (A [i, j]: 3); end; writeln; end; readln; end.
Наведемо приклад програми іншого способу заповнення за заданим правилом:
program M1В; var A:array[1..100,1..100] of integer; n,m,i,j: integer; c: integer; begin readln(n,m); c:=1; для i:=1 до n до початок для j:=1 до m до початків A[i,j]:=c; if (i mod 2 = 0) and (j<>m) then dec(c) else inc(c); write (A [i, j]: 3); end; c:=c+m-1; writeln; end; readln; end.
2. Заповнити масив A за таким принципом:
1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0
program M2; var A:array[1..100,1..100] of integer; n,m,i,j: integer; c: integer; begin readln(n,m); c:=0; для i:=1 до n до початок для j:=1 до m до початок іп (i-1+j) mod 2 = 0 then A [i,j]:=0 else begin inc(c); A[i,j]:=c; end; write (A [i, j]: 5); end; writeln; end; readln; end.
3. Заповнити масив A за таким принципом:
1 12 13 24 25 36 2 11 14 23 26 35 3 10 15 22 27 34 4 9 16 21 28 33 5 8 17 20 29 32 9 7 31
var A:array[1..100,1..100] of integer; n,m,i,j: integer; c: integer; begin readln(n,m); c:=1; для j: = 1 до begin для i: = 1 для n begin A[i,j]:=c; if (j mod 2 = 0) and (i<>n) then dec(c) else inc(c); end; c:=c+n-1; end; for i:=1 to n do begin for j:=1 to m do write(A[i,j]:5); writeln; end; readln; end.
4. Заповнити масив A за таким принципом:
1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4
var i,j,m,c,d: integer; A:array[1..100,1..100] of integer; begin c:=1; readln(m); for j:=1 to m begin i:=c; d:=1; repeat A[i,j]:=d; inc(i); if i>m then i:=1; inc(d); until i=c; dec(c); if c