Практическое задание N 1. 23
Создать базу данных для десяти учащихся класса с оценками по трем предметам. Вывести на экран таблицу учащихся в алфавитном порядке с оценками по всем предметам. Вывести на экран таблицу в порядке увеличения средней оценки ученика.
Работа с большими массивами
Поскольку суммарный размер всех переменных, описанных в программе, не может превышать длины сегмента ( 64 К ), то использование массивов больших размеров вызывает определенные трудности. Опишем известный способ "разбиения" двумерного массива с использованием переменных типа ссылка.
program Big_Mas;
CONST N1= 30; N2= 50;
type M1= array [1 . . N1 ] of REAL;{ тип M1 - массив переменных вещественного типа}
M2= array[1..N2] of ^M1; { тип M2 - массив ссылок на начальные адреса
элементов массивов типа M1}
var a1, a2: M2;{ двумерные массивы N1xN2 переменных вещественного типа }
i, j: word;
BEGIN
for i:=1 to N2 do New(a1[i]);{ размещение массива в оперативной памяти }
for i:=1 to N2 do New(a2[i]);
for j:= 1 to N1 do
for i:= 1 to N2 do begin
a1[i]^[j]:= j + Sin(Pi*i/N2);{ пример расчета значений }
a2[i]^[j]:= j - Cos(Pi*i/N2){ элементов двумерных массивов }
end;
for i:= 1 to N2 do Dispose(a1[i]); { освобождение оперативной памяти }
for i:= 1 to N2 do Dispose(a2[i]);
Readln;
END.
Таким образом в оперативной памяти отводится место не под двумерные массивы "a1" и "a2" размером N1xN2, а под одномерные массивы (размером N2) адресов первых элементов линейных массивов (размером N1). Операция a1[i]^[j] ( a2[i]^[j] )называется разыменование переменной (элемента массива).
Большие двумерные массивы часто применяются при решении "сеточных" задач.
1, 1 1, 2 1, 3 1, 4 Пусть дана сетка, узлы которой пронумерованы
* * * * двумя цифрами, каждая из цифр равна номеру узла
2, 1 2, 2 2, 3 2, 4 в соответствующем направлении.
* * * * При решении задачи требуется хранить значения
3, 1 3, 2 3, 3 3, 4 некоторых функций в узлах, т. е. использовать
* * * * элементы двумерных массивов. Значения индексов
элементов показывают расположение узла на сетке.
Дата добавления: 2016-06-29; просмотров: 1233;