
- •Вопросы и задачи 2 часть
- •Вопросы
- •1.Понятия алгоритм, программа, процесс. Дайте формальное определение алгоритма и поясните его свойства. Понятия
- •6.Понятие рекурсии. Определение рекурсивного алгоритма. Какие задачи решаются рекурсивными методами. Разбиение задачи на
- •11.Изложите алгоритм метода быстрой сортировки Хоара. (11,22)
- •16.Для чего нужны древовидные структуры данных? Приведите и проиллюстрируйте основные определения: порядок узла,
- •20.Понятия статического и динамического распределения памяти. Что такое указатель? Операции над указателями. Что
- •24.Что такое записи в языке Pascal? Как они описываются, в чем особенность вариантной
- •Задачи
- •1.Задача о рисовании движущихся картинок (Круг).
- •3.Ввести массив записей {a[i].f, a[i].k} (f - фамилия; к - учетный номер) из
- •5.Решить задачу оптимального выбора из элеметов
- •7.Решить задачу оптимадьного выбора из элеметов
- •9.Ввести массив записей {a[i]:TInf } (Inf.F - фамилия; Inf.к - учетный номер) из
- •11.Составить программу вычисления арифметического выражения, записанного в
- •13.Ввести массив записей с заданными произвольно ключами {a[i]:TInf} (Inf.F - фамилия; Inf.к -
- •15.Ввести массив записей с упорядоченным распределением ключей {a[i]:TInf } (Inf.F - фамилия; Inf.к
3.Ввести массив записей {a[i].f, a[i].k} (f - фамилия; к - учетный номер) из TstringGrid1, отсортировать по ключу к и выдать в TStringGrid2. Алгоритм
сортировки по методу слияния в виде рекурсивной процедуры оформить в отдельный модуль Unit2 как метод класса. (3,19)
4.Ввести массив записей {a[i].f, a[i].k} (f - фамилия; к - учетный номер) из TstringGrid1, отсортировать по ключу к и выдать в TStringGrid2. Алгоритм сортировки по методу разделения Хоара в виде
рекурсивной процедуры оформить в отдельный модуль Unit2 как метод класса. (8,20)
07/02/19 |
11 |
5.Решить задачу оптимального выбора из элеметов
{a[i].w,a[i].c,i=1..N}, ∑wi<wmax, ∑ci max методом
полного перебора. Алгоритм решения в виде процедуры оформить в отдельный модуль Unit2 как метод класса, исходный массив ввести из TStringGrid, результат вывести в TMemo.(5,21)
6.Решить задачу оптимального выбора из элеметов
{a[i].w,a[i].c,i=1..N}, ∑wi<wmax, ∑ci max методом ветвей и границ. Алгоритм решения оформить в
виде процедуры, оформленной в отдельный модуль Unit2 как метод класса. Исходный массив ввести из TstringGrid, результат вывести в TMemo. (6,22)
07/02/19 |
12 |
7.Решить задачу оптимадьного выбора из элеметов
{a[i].w,a[i].c,i=1..N}, ∑wi<wmax, ∑ci max методом минимального веса. Алгоритм решения в виде процедуры оформить в отдельный модуль Unit2, исходный массив ввести из TstringGrid, результат вывести в TMemo.(7,23)
8.Составить программу работы со списком в виде очереди на основе одномерного динамического массива. Фамилию a.f и учетный номер a.k добавляемой и читаемой записи отображать в первой строке StringGrid1 и StringGrid2 соответственно. Состояние текущего списка из n записей отражать в n строках StringGrid3. В отдельном модуле написать класс, содержащий следующие методы: создание начального динамического массива Create, добавление новой записи в конец списка Аddk; чтение с удалением записи из начала списка Read1,
StringGrid3. (4,30)
07/02/19 |
13 |
9.Ввести массив записей {a[i]:TInf } (Inf.F - фамилия; Inf.к - учетный номер) из StringGrid1 в стек с меткой, отсортировать стек методом пузырька с обменом
ключами, вывести отсортированный стек в StringGrid2. Алгоритмы записи Add, чтения Read элементов стека и его сортировки Sort оформить в отдельном модуле в виде методов класса. (9,25)
10.Ввести массив записей {a[i]:TInf } (Inf.F - фамилия; Inf.к - учетный номер) из StringGrid1, в односвязный
список в виде очереди, отсортировать очередь
методом слияния, вывести отсортированный список в StringGrid2. Алгоритмы записи Addk, чтения
Read1 элементов списка и его сортировки Sort оформить в отдельном модуле в виде методов класса. (10,24)
07/02/19 |
14 |
11.Составить программу вычисления арифметического выражения, записанного в
постфиксной форме. Выражение ввести из окна TEdit1, значения однобуквенных операндов ввести из StringGrid1, результат поместить в Edit2. Алгоритм вычисления оформить в отдельном модуле в виде методов класса. (11,27)
12.Составить программу преобразования арифметического выражения, записанного в инфиксной форме в выражение, записанное в
постфиксной форме. Исходное выражение ввести из окна Edit1, преобразованное выражение поместить в Edit2. Алгоритм преобразования оформить в отдельном модуле в виде методов класса. (12,28)
07/02/19 |
15 |
13.Ввести массив записей с заданными произвольно ключами {a[i]:TInf} (Inf.F - фамилия; Inf.к - учетный номер) из StringGrid1 в двоичное дерево поиска методом AddB, после чего прочитать его в
StringGrid2 методом Wrt1B. Методы класса AddB и Wrt1В оформить в отдельном модуле. (13,29)
14.Ввести массив записей с заданными произвольно ключами {a[i].Inf} (Inf.F - фамилия; Inf.к - учетный номер) из StringGrid1 в двоичное дерево поиска процедурой AddB, после чего найти в дереве поиска и распечатать в Memo1 запись с ключом k, введенным из Edit1. Методы класса AddB и PoiskВ оформить в отдельном модуле. (1,14)
07/02/19 |
16 |
15.Ввести массив записей с упорядоченным распределением ключей {a[i]:TInf } (Inf.F - фамилия; Inf.к - учетный номер) из StringGrid1 в двоичное сбалансированное дерево с помощью метода Blns. После чего найти в дереве поиска с помощью функии MinkB и распечатать в Memo1 запись с минимальным ключом. Методы класса Blns , MinkB оформить в отдельном модуле. (17)
16.Составить программу, в которой организовать ввод массива n записей с произвольным распределением ключей {a[i].Inf} (Inf.F - фамилия; Inf.к - учетный номер) из StringGrid1 в хеш-таблицу размера M>=n методом Add и организовать поиск записи в хеш-таблице по заданному ключу x методом Read. Значения М, х ввести из окон Edit, найденную фамилию вывести в окно Edit. В отдельном модуле написать класс для работы с хеш-таблицей на основе массива из стеков, который включает конструктор Create(M0), а также два метода07/02/19Add(Inf:Tinf) и Read(Key:Word):Tinf. (16,26)17