Ввод элементов двумерного массива




Лекция 3

Операции с индексированными переменными

Массивы одномерные

Массив – это поименованный набор однотипной информации

Массив объединяет элементы одного типа данных. Всему набору данных присваивают общее имя - имя массива. Каждый элемент массива определяется с помощью индекса, определяющего место этого элемента в общем наборе.

Данные в массиве сохраняются, как и в случае использования обычных неиндексированных переменных, только до конца работы программы.

Характеристики массива:

· тип – общий тип всех элементов массива;

· размерность (ранг) – количество индексов массива; одномерный двумерный…..

· диапазон изменения индексов – определяет количество элементов в массиве.

Вектор (одномерный массив) – это массив, в котором элементы нумеруются одним индексом.

 

 

Описание массивов

Для одномерного массива:

Var

a: array[1…n] of <тип>;

где a - имя массива;

n - максимальное количество элементов массива;

<тип> - тип элементов массива.

Например:

Var

mas: array [1…10] of real;

Begin

...

Описан массив mas - содержащий 10 элементов вещественного типа.

Каждый элемент массива определяется с помощью индекса, стоящего справа от имени в квадратных скобках.

a [ i ], a [i+2], a [9]

Индекс может быть - переменной, константой, арифметическим выражением целого типа.

Размер массива должен быть задан в явном виде (как в предыдущем фрагменте), или через const.

Например:

Const

n = 100;

Var

mas: array [1…100] of real;

Begin

Ввод элементов массива

for i:=1 to n do

readln(a[ i ]);

Каждое прохождение через цикл соответствует вводу одного элемента массива.

 

Вывод элементов массива

for i:=1 to n do

writeln(a[ i ]);

Каждое прохождение через цикл соответствует выводу одного элемента массива.

 

Обработка одномерных массивов

Рассмотрим типовые задачи обработки одномерных массивов.

 

Задача.

 

Дан массив a(n). Найти максимальный элемент массива и определить

его номер.

 

Таблица идентификаторов

 

Наименование переменной Обозначения в программе
  Имя массива a
  Размер массива n
  Индекс массива i
  Максимальный элемент max
  Номер максимального элемента nmax

 

 

program mas_2;

Var

a: array [1…100] of real;

i,n,nmax: integer;

max: real;

Begin

writeln ('введите размер массива n<=100');

readln (n);

writeln ('введите элементы массива');

for i:=1 to n do

readln (a[ i ]);

{за максимальный принимается первый элемент массива}

max:=a[1]; nmax:=1;

for i:=1 to n do

If a[i]>max then

Begin

max:=a[i];

nmax:=i;

end;

writeln ('max =', max, ' N=', nmax);

readln;

End.

max=6 2

3 6 1

 

 

Задача.

 

Задан массив целых чисел. Отсортировать элементы одномерного массива по возрастанию.

 

Существует много способов сортировки элементов массива

Таблица идентификаторов

 

Наименование переменной Обозначения в программе
  Имя массива a
  Размер массива n
  Индекс массива i
  Флажок flag
  Дополнительная переменная для обмена местами соседних элементов p

 

program mas_3;

uses

crt;

var

a: array [1…100] of integer;

f, n, i,p: integer;

 

begin

clrscr;

writeln ('введите размер массива n<=100');

readln (n);

writeln ('введите элементы массива');

for i:=1 to n do

readln (a[i]);

repeat

f:=0;

for i:=1 to n-1 do

if a[ i ]>a[i+1] then

begin

p: =a[ i ];

a[ i ]:=a[i+1];

a[i+1]:=p; f:=1;

end;

until f=0;

for i:=1 to n do writeln (a[ i ]);

readln;

end.

 

В данном алгоритме используются вложенные циклы.

Внутренний цикл (for…to…do) – позволяет один раз пройтись по массиву, сравнивая соседние элементы. В случае, если предыдущий элемент (a[ i ]) окажется больше последующего (a[i+1]), элементы меняются местами через дополнительную переменную p.

Внешний цикл(repeat…until) – повторяется до тех пор, пока массив не будет упорядочен.

 

i=1,10 j=2, n-1

 

j=1 a[1]= min=1

3 6 2 8 1

1 6 2 8 3

 

j=2 a[2]=min=2

6 2 8 3

2 6 8 3

 

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

Матрицы

 

Если в массиве хранится таблица значений, то такой массив называют двумерным, а его элементы нумеруются двумя индексами – номером строки и номером столбца, на пересечении которых находится данный элемент.

В памяти компьютера все элементы массива занимают одну непрерывную область. Двумерный массив располагается в памяти по строкам.

Двумерный массив можно представить в виде матрицы.

. .

 

Описание двумерного массива

 

Для двумерных массивов:

 

Var

a:array[1..n,1..m] of <тип>;

 

Где a - имя массива;

n, m - количество строк и столбцов в массиве;

<тип> - тип элементов массива.

Количество элементов в массиве - n m.

Например:

Var

mas: array [1…10,1..10] of real;

Begin

 

Описан массив mas - содержащий 100 элементов вещественного типа (10 строк и 10 столбцов).

Размер массива должен быть задан в явном виде (как в предыдущем фрагменте), или через const.

 

 

Например:

Const

n = 5, m=5;

Var

mas: array[1…n,1..m] of real;

Begin

Описан массив mas - содержащий 25 элементов целого типа (5 строк и 5 столбцов).

Каждый элемент массива определяется с помощью двух индексов, стоящих справа от имени в квадратных скобках.

a[i, j] - элемент стоящий на пересечении i-ой строки и j-го столбца.

a[i, i] - элементы главной диагонали.

a[i, 2] - элементы второго столбца.

Индекс может быть - переменной, константой, арифметическим выражением целого типа.

Если количество строк равно количеству столбцов, матрица называется квадратной.

Обработка двумерных массивов производится при изменении индексов элементов.

Все элементы главной диагонали удовлетворяют условию:

i=j

(номер строки равен номеру столбца).

 

Все элементы побочной диагонали удовлетворяют условию:

i+j=n+1

(n - количество строк и столбцов).

Элементы, расположенные над главной диагональю удовлетворяют условию:

i<j

(номер строки строго меньше номера столбца).

Элементы, расположенные под главной диагональю удовлетворяют условию:

i>j

(номер строки строго больше номера столбца).

 

Ввод элементов двумерного массива

for i:=1 to n do

for j:=1 to m do

readln(a[i,j]);

Данный фрагмент позволит ввести элементы массива по строкам.

Для ввода элементов массива по столбцам, достаточно в предыдущем фрагменте поменять местами внутренний и внешний циклы.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-13 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: