Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФ_ЛЕКЦИИ_(1 С)_2011.doc
Скачиваний:
5
Добавлен:
16.04.2019
Размер:
898.56 Кб
Скачать

Var I, kP,j : integer ;

b : real ;

a : array [1..n] of real ;

begin

write (‘введите массив‘);

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

writeln (' исходный массив:);

for i:=1 to n do write (a[i]:5:2);

writeln;

j:=n;

repeat kP:=0; j:=j–1;

for i:=1 to j do

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

begin

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

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

end

until kP = 0;

writeln(' упорядоченный массив ‘);

for i:=1 to 10 do write (a[i]:5:2)

end.

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

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

Пример 5.8.

var

bas : array [0..5,1..10] of real ;

В разделе описания переменных объявлен двумерный массив вещественного типа bas, состоящий из 6 строк и 10 столбцов; размер массива 610=60 элементов.

Пример 5.9

type

c = array [1..3,1..10] of integer ;

var

maxim : c;

Здесь массив maxim описан в двух разделах – типов и переменных, и состоит из 3 строк и 10 столбцов; базовый тип элементов – целый, размер массива – 30 элементов.

Обращение к элементам. Для того, чтобы обратиться к элементу двумерного массива, нужно после его имени указать в квадратных скобках два индексных выражения, разделенные запятой. Индексным выражением может быть константа, переменная или выражение того типа, который указан для индексов в описании массива (см. рис. 5.1)

Рис. 5.1. Схема расположения элементов двумерного массива

Пример 5.10.

x[2,1] – обращение к элементу массива x с индексами 2 и 1;

zet[m,n] – обращение к элементу массива zet; индексы элемента m и n должны быть предварительно определены численно;

beta[i+2,k] – обращение к элементу массива beta; индексное выражение i +2 должно быть предварительно вычислено, а значение k определено.

Ввод-вывод двумерных массивов

Для хранения элементов массива в памяти ЭВМ резервируется непрерывная область, размер которой вычисляется транслятором по описанию массива. Ввод массивов осуществляется поэлементно, как правило, при помощи оператора цикла for.

Пример 5.11. Ввести матрицу С размера 611, нумерация индексов которой начинается с 0.

Var I, k : integer ;

c : array [0..5,0..10] of real ;

begin

for i:=0 to 5 do

for k:=0 to 10 do

read (c[i,k]);

end.

В приведенном фрагменте цикл начинается с присваивания параметру i его начального значения, равного нулю, после чего выполняется внутренний цикл с параметром k, последовательно принимающим значения 0, 1, 2,...,10, т.е. вводятся элементы нулевой строки матрицы c[0,0], c[0,1], c[0,2], ..., c[0,10]. Далее произойдет возврат во внешний цикл, значение переменной i увеличится на 1. При новом значении i снова будет выполнен внутренний цикл, т.е. введены элементы следующей строки. Операции ввода будут продолжаться до тех пор, пока не будут введены все элементы массива.

Пример 5.12. Написать фрагмент программы, содержащий вывод матрицы C (10  20) в виде таблицы, содержащей 10 строк и 20 столбцов. Индексацию строк начать с –1, столбцов с 0.