Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Двумерный массив

Читайте также:
  1. int n; //р-ть массив
  2. RAID-массив в персональном компьютере
  3. RAID-массив в персональном компьютере
  4. RAID-массивы и матрицы
  5. А1. Ввод массива с клавиатуры
  6. Анализ элементов массива
  7. Б. Вывести исходный массив.

 

Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:

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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Одномерные массивы| Двумерные массивы

mybiblioteka.su - 2015-2024 год. (0.006 сек.)