Читайте также: |
|
Массив – структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует номер (индекс), определяющий его местонахождение в общей последовательности.
Формат записи массива через раздел описания типов имеет вид:
Type <имя типа>= array [тип индекса] of <тип компонента>;
Var <идентификатор,…>: <имя типа>;
Формат записи массива через раздал описания переменных:
Var <идентификатор,…>: array [тип индекса] of <тип компонента>;
Массивы различают по количеству индексов: одномермые (1 индекс), двумерные и N-мерные (N индексов).
Пример: Type Vector = array [1..25] of real; {одномерный массив}
Matrix = array [1..20, 1..30] of byte; {двумерный массив}
Рассмотрим работу с массивами на примере следующей задачи: Даны два массива целых чисел. Вычислить произведение максимального элемента первого массива на минимальный элемент второго массива. Удалить максимальный элемент из первого массива и добавить его во второй массив после минимального.
program example_9;
type massiv= array [1..40] of integer;
var a, b: massiv;
i, n, k, p, j, min, Imin, max, Imax: integer;
begin
{ввод массива с клавиатуры}
write('Введите размерность массива А n=');
readln(n);
writeln('Введите элементы массива А');
for i:=1 to n do begin
write('a[',i,']=');
readln(a[i]);
end;
{ввод массива случайным образом}
write('Введите размерность массива В k=');
readln(k);
randomize; {подключение генератора случайный чисел}
for i:=1 to k do
b[i]:=random(16); {заполнение массива случайными числами от 0 до 15}
{Вывод массива на экран}
Writeln('Массив В');
for i:=1 to k do write(b[i],' ');
writeln; {пустой оператор вывода}
{Поиск максимального элемента}
max:=a[1];
Imax:=1;
for i:=2 to n do
if a[i]>max then begin
max:=a[i]; {максимальный элемент}
Imax:=i; {индекс максимального элемента}
end;
{Поиск минимального элемента}
min:=b[1];
Imin:=1;
for i:=2 to n do
if b[i]<min then begin
min:=b[i]; {минимальный элемент}
Imin:=i; {индекс минимального элемента}
end;
{вычисление произведения и его вывод на экран}
p:=min*max;
writeln('Произведение max и min равно ',p);
{Удаление элемента из массива с позиции Imax}
for i:=Imax to n-1 do
a[i]:=a[i+1];
n:=n-1; {Уменьшение количества элементов массива на 1}
{Вставка элемента в массив после элемента равного min}
i:=1;
while i<k do
begin
if b[i]=min then begin
for j:=k+1 downto i+1 do b[j]:=b[j-1]; {смещение элементов на один вправо, начиная с последнего}
k:=k+1; {Увеличение количества элементов на один}
b[i+1]:=max; {Вставка элемента на позицию i+1}
end;
i:=i+1; {Увеличение счетчика итераций}
end;
{Вывод массивов А и В на экран в строку}
writeln(‘Массив А: ‘);
for i:=1 to n do write(a[i],' ');
writeln;
writeln(‘Массив В: ‘);
for i:=1 to k do write(b[i],' ');
end.
Записи
Запись представляет собой наиболее общий и гибкий структурированный тип данных, так как она может быть организована из не однотипных компонентов и в ней явным образом выражена связь между элементами данных, характеризующими реальный объект. Широко используется при программировании информационно-поисковых систем.
Формат записи:
Type <имя_типа>= record
<имя_поля1>: тип;
<имя_поля2>: тип;
…………………;
<имя_поляN>: тип
end;
Элементы записи называются полями, а обращение к ним производится через использование их имен – идентификаторов полей. Отличие от обычной переменной записи в том, что имена полей должны предваряться ссылкой на идентификатор записи и отделяться от него точкой. Такая запись называется уточняющий идентификатор: <имя_записи>.<имя_поля>
Пример: Описание личных данных учащегося.
Type svedenia= record
f: string[40];
dat_r: string[8];
pol: char;
klass: string[4]
end;
Задача. Пусть нам необходимо иметь сведения о всех учащихся нашего плавания. А затем из общего списка вывести фамилии учеников, которые учатся в 9 классе.
Для этого целесообразно организовать массив записей, потом отобрать только тех, у которых в поле klass есть цифра 9.
program anketa;
type svedenia= record
f: string[40];
dat_r: string[8];
pol: char;
klass: string[4]
end;
var ychen: array [1..100] of svedenia;
i, j: integer;
begin
{Последовательно вводим каждую запись}
for i:=1 to 100 do begin
writeln(‘введите сведения о’, i, ‘-м ученике’);
write (‘введите фамилию и имя ’);
readln (ychen [i].f);
write(‘введите дату рождения’);
readln (ychen [i].dat_r);
write(‘введите класс’);
readln(ychen[i].klass);
end;
writeln(‘ввод закончен’);
writeln;
{Просматриваем массив записей и выбираем только учеников 9-го класса}
for i:=1 to 100 do begin
for j:=1 to Length(ychen [i]. klass) do
if ychen [i]. klass[j]=9 then
writeln(‘фамилия ученика: ’, ychen[i].fio);
end.
Дата добавления: 2014-12-19; просмотров: 106 | Поможем написать вашу работу | Нарушение авторских прав |