- •Билет 1
- •Билет 2
- •Способы представления графов
- •Билет 3
- •Билет 4
- •Билет 5
- •Билет 6
- •Билет 7
- •Основы визуального программирования
- •Билет 8
- •Обменная сортировка.
- •Конструкторы и деструкторы
- •Билет 9
- •Билет 10
- •Статическое и динамическое распределение памяти. Понятие указателя.
- •Процедуры и функции модуля graph.
- •Билет 11
- •Доступ к системным ресурсам в операционной системе pc-dos
- •Билет 12
- •Билет 13
- •Билет 14
- •Билет 15
- •Алгоритм генерирования перестановок с минимальным числом транспозиций
- •1. Введение в теорию графов. Способы представления графов: матрицы смежности и инцидентности, списки инцидентностей, списки ребер.
- •2. Функции библиотеки dos. Прерывания. Обработка прерываний.
- •Связные компоненты графа. Деревья. Бинарное дерево как связный граф без циклов
- •2.Сортировка вставками
- •2)Итерационные циклы
- •1.Эйлеровы пути в графе.
- •2.Ввод-вывод с помощью текстовых файлов.
- •Алгоритм Дейкстры (Dijkstra)
- •Вопрос 1.
- •Вопрос 2.
- •Создание и обработка одномерных динамических массивов.
- •Операторы цикла.
- •2.Сортировка распределением
- •1)Односвязные линейные списки
- •2) Записи. Организация, размещение. Записи с вариантами.
- •1.Алгоритмы с возвратом, их реализация с помощью рекурсий и с использованием стека. Гамильтоновы циклы.
Создание и обработка одномерных динамических массивов.
Одномерный динамичесский массив в Delphi объявляется следующим образом.
var
a: array of #тип#; где #тип# - тип элемента массива.
После обьявления массива необходимо выделить под него память. Это делается следующим образом:
SetLength(a, n); где n – это размер массива.
Важно знать, что после задания длины массива нижняя граница изменения индекса равна 0, а верхняя граница равна размеру массива -1. Эти значения можно получить с помощью функций Low() и High() соответственно.
Пример заполнения и вывода такого массива.
|
program Project1; uses SysUtils;
var a : array of integer; i, j, n, m : integer; begin Writeln('vvedite razmer massiva'); readln(n); Randomize; for i := low(a) to high(a) do for J := low(a) to high(a) do a[i,j] := Random(100);
for i := low(a) to high(a) do begin for j := low(a) to high(a) do Write(a[i,j]:5); Writeln; end; end. |
|
|
Операторы цикла.
В Delphi поддерживаются два оператора цикла:
for
Это такой оператор цикла, в котором имеется счётчик и действия выполняются от начального значения до конечного с щагом 1. Шаг может быть как в положительную сторону (между начальным и конечным значением ставится to), так и в отрицательную (ставится downto).
Пример использования:
for i:=1 to n do
begin
…
end;
Важно, чтобы переменная, используемая под счётчик была перечислимого типа( например integer).
б) while
Здесь цикл повторяется пока выполняется какое-то условие.
Пример
var b: Boolean;
…
while b do
begin
…
end;
Ественно чтобы цикл не выполнялся вечно условие b должно меняться.
Билет 27
Стек — динамическая структура данных, представляющая из себя упорядоченный набор элементов, в которой добавление новых элементов и удаление существующих производится с одного конца, называемого вершиной стека.
По определению, элементы извлекаются из стека в порядке, обратном их добавлению в эту структуру, т.е. действует принцип "последний пришёл — первый ушёл".
Стек можно организовать на базе любой структуры данных, где возможно хранение нескольких однотипных элементов и где можно реализовать определение стека: линейный массив, типизированный файл, однонаправленный или двунаправленный список. В нашем случае наиболее подходящим для реализации стека является однонаправленный список, причём в качестве вершины стека выберем начало этого списка.
Операции над стеком:
добавление элемента в стек;
удаление элемента из стека;
проверка, пуст ли стек;
просмотр элемента в вершине стека без удаления;
очистка стека.