Читайте также: |
|
Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:
Var a: array [1..10] of array [1.. 20] of real;
Var a: array [1..10, 1..20] of real;
Чаще всего при описании двумерного массива используют второй способ. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами линейного массива. Только для инициализации двумерного массива используется вложенный цикл for.
Например, For i:= 1 to 10 do
For j:= 1 to 20 do A[i, j]:= 0;
Двумерный массив можно представить в виде таблицы.
При обращении к элементам массива, нужно записывать столько индексов, какой размерности объявлен массив. Чтобы заполнить двухмерный массив необходимо использовать двойной цикл.
Обьявляется двумерный массив:
VAR M: ARRAY [1..4, 1..6] OF REAL; здесь задано 4 строки и 6 столбцов.
Для того чтобы заполнить таблицу, нужно задать координаты элементов. В таблице сначала надо записать индекс строки, затем индекс столбца. Можно записать:
М [2,4]: =557;
М [3,1]:=100;
1 2 3 4 5 6
Если нужно переставить 1 и3 строки, то нужно объявить дополнительный массив R.
R: ARRAY [1..4] OF INTEGER; I: INTEGER;
Begin
FOR I: =1 to 4 do R [I]: =M [1,I];
FOR I: =1 to 4 do M [1,1]: =M [3,I];
FOR I: =1 to 4 do M [3,I]: =R [I];
Замечание: нет смысла записывать два цикла, можно просто записать один.
При использовании раздела типов, можно записать:
TYPE COLOR = (RED, BLUE, BLACK);
MAS1 = ARRAY[-5..15] OF REAL;
MAS2 = ARRAY[1..10,8..30] OF INTEGER;
MAS3 = ARRAY['A'..'C'] OF ARRAY[1..5] OF BOOLEAN;
MAS4 = ARRAY [BOOLEAN] OF CHAR;
MAS5 = ARRAY[CHAR] OF INTEGER;
VAR A:MAS1; B:MAS2; C:MAS3; D:MAS4;
E:ARRAY[COLOR] OF REAL;
X,Y,Z,X1,X3:MAS5;
BEGIN
A[-4]:= 4; B[5,9]:= 56; C['B',2]:= FALSE;
X['F']:= 8; C['B',5]:=true;
Y['F']:= 44; Z['D']:=85; E[RED]:=85.3; E[BRACK]:=4;
Пример. Ввести матрицу N на M и подсчитать сумму всех ее компонент.
Program Summa;
Uses CRT;
Const N=2; M=3;
Type Matr= array [1..N, 1..M] of real;
var s: real; i, j: integer; X: Matr;
Begin
ClrScr;
Writeln('Введите элементы матрицы ',N,'х',M,':');
for i:=1 to N do
for j:=1 to M do
Begin
Write('X[',I,',',J,']='); Readln(X[I,J]);
end;
s:=0;
for i:=1 to N do
for j:=1 to M do s:=s+X[I,J];
for i:=1 to N do
Begin
Writeln;
for j:=1 to M do Write(X[I,J]:6:2);
end;
Writeln;
Writeln('Сумма компонент матрицы равна: ', S:6:2)
End.
ПРИМЕР: найти сумму элементов второй строки и максимальный элемент.
VAR M: ARRAY [1..4, 1..6] OF REAL;
Max: integer; Imax, Jmax: integer; Sum2: real; I, J: integer;
Begin
WRITELN (‘ заполнить массив М по строкам‘);
FOR I: =1 to 4 do
FOR J: =1 to 6 do READ (M [I, J]); READLN;
Sum2: =0;
FOR I: =1 to 6 do Sum2+M [2, I];
WRITELN (‘ Sum2=’, Sum2);
MAX: =M [1, 1]; Imax: =1; Jmax: =1;
FOR J: =1 to 6 do
FOR I: =1 to 4 do
IF M [I, J]> max then
Begin
MAX: =M [I, J]; Imax: =I; Jmax: =J;
END;
WRITELN (‘ максимальный элемент: ’, MAX, ‘ координаты: ’, Imax,’x’, Jmax);
END.
Дата добавления: 2015-07-11; просмотров: 58 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Одномерные массивы | | | Двумерные массивы |