Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
oaip.docx
Скачиваний:
7
Добавлен:
26.09.2019
Размер:
292.13 Кб
Скачать

Билет 14

  1. Сейчас опишем метод генерирования последовательности всех n! перестановок n-элементного множества. Будем предполагать, что элементы нашего множества запоминаются в виде элементов массива Р[1],..., Р[n]. В данном методе элементарной операцией, которая применяется к массиву Р, и является значениями переменных P[i] и P[j], где 1 < i,j < n. Эту операцию будем обозначать через Р[i] := P[j]. Очевидно, что она эквивалентна последовательности команд роm := Р[i]; Р[i] := P[j]; P[j] := роm,

где роm есть некоторая вспомогательная переменная.

Алгоритм. (Генерация всех перестановок в антилексикографическом режиме)

procedure Reverse(m:integer);

{Обращение последовательности}

var

k,i,j:integer;

begin

i:=1;

j:=m;

while i<j do

begin

k:=P[i];

P[i]:=P[j];

P[j]:=k;

inc(i);

dec(j);

end;

end;

procedure Antilex(m:integer);

{Массив Р - глобальный}

var

l,i:integer;

begin

if m=1 then {Нерекурсивная ветвь}

begin

for i:=1 to n do

Write(fout,P[i]:4);

Writeln(fout);

end

else {Рекурсивная ветвь}

for i:=1 to m do

begin

Antilex(m-1);

if i<m then

begin

l:=P[i];

P[i]:=P[m];

P[m]:=l;

Reverse(m-1);

end;

end;

end;

  1. Типизированные файлы – это файлы, состоящие из нумерованной последовательности объектов (записей) любого типа. С такими файлами можно работать в режиме прямого доступа, при котором выполняется непосредственное об­ращение к любой записи файла. Каждая запись файла имеет свой номер, начиная с 0 и т.д.

Процедуры и функции обработки файлов:

1) Write и Read- записывают и читают информацию из указанного файла и перемещают указатель файла к сле­дующей записи.

2) Seek (файловая переменная, номер записи); процедура перемещения указателя на запись файла с заданным номером.

3) Truncate (файловая переменная); процедура, усекающая файл по текущей позиции указа­теля файла, т.е. все записи, находящиеся после указателя фай­ла, удаляются.

4) Функция Filesize (файловая переменная); имеет тип Integer и определяет размер файла, т.е. число записей.

5) Функция Filepos (файловая переменная); имеет тип Integer и возвращает текущую позицию указателя файла.

Для добавления записей в конец файла используются процедуры:

Readln (a );

Seek (f, filesize (f));

Write (f, a);

При этом указатель устанавливается за конец файла, т.к. нуме­рация записей начинается с нуля. После чего с помощью Write можно добавлять записи. Открывать файл можно только проце­дурой Reset (f).

Для того, чтобы в режиме произвольного доступа считать, а затем изменить значение записи, следует выполнить два вы­зова процедуры Seek.Один вызов перед операцией Read, а другой - перед операцией Write (т.к. Read после чтения записи переместит указатель к сле­дующей записи).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]