Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sp_table2012 (1).doc
Скачиваний:
9
Добавлен:
17.09.2019
Размер:
339.97 Кб
Скачать

Примечания:

  1. Программа должна содержать несколько функций; функция main должна выполнять: вывод меню, ввод и анализ ответа, вызов на исполнение требуемой функции;

  2. В программе нужно предусмотреть проверку правильности ввода данных;

  3. Для варианта b) следует модифицировать структуру, определяющую элемент таблицы, включив в нее длину информации и ее смещение в файле;

  4. В варианте b) для работы с файлом использовать функции пакета stdio.h; чтение и запись выполнять с помощью fread() и fwrite(), в которых должна быть указана реальная длина информации.

Вариант 29***

Написать программу для работы с просматриваемой таблицей по запросам оператора.

Просматриваемая таблица организована списком; каждый элемент таблицы имеет следующую структуру:

struct Item{

int key; /* ключ элемента; не может быть 0 */

int par; /* ключ родительского элемента */

char *info; /* указатель на информацию */

Item *next; /* указатель на следующий элемент */

};

Предусмотреть следующие операции:

  • включение нового элемента в таблицу при условии, что в таблице не может быть двух элементов с одинаковыми ключами и значение ключа родительского элемента должно совпадать с каким-нибудь значением ключа элемента, существующего в таблице, или быть равным 0. Если при включении нового элемента возникает какая-либо ошибочная ситуация, на экран должно быть выведено соответствующее сообщение об ошибке;

  • удаление из таблицы элемента, заданного своим ключом; при этом также должны быть удалены (рекурсивно) все элементы, ссылающиеся на удаляемый;

  • поиск в таблице всех элементов, заданных значением ключа родительского элемента. Результатом поиска должна быть новая таблица, содержащая найденные элементы;

  • вывод содержимого таблицы на экран.

Разработать два варианта программы:

  1. и сама таблица, и информация, относящаяся к элементу таблицы, хранятся в основной памяти;

  2. и сама таблица, и информация, относящаяся к элементу таблицы, хранятся во внешней памяти (используется двоичный файл произвольного доступа). Все операции выполняются с таблицей, размещенной в основной памяти. Таблица считывается из файла (или создается в первый раз) в начале сеанса работы и записывается в файл в конце сеанса работы. Информация, относящаяся к элементу таблицы, записывается в файл сразу же при выполнении операции включения в таблицу. Имя файла вводится по запросу из программы.

Примечания:

  1. Программа должна содержать несколько функций; функция main должна выполнять: вывод меню, ввод и анализ ответа, вызов на исполнение требуемой функции;

  2. В программе нужно предусмотреть проверку правильности ввода данных;

  3. Для варианта b) следует модифицировать структуру, определяющую элемент таблицы, включив в нее длину информации и ее смещение в файле;

  4. В варианте b) для работы с файлом использовать функции пакета stdio.h; чтение и запись выполнять с помощью fread() и fwrite(), в которых должна быть указана реальная длина информации.

Вариант 30***

Написать программу для работы с просматриваемой таблицей по запросам оператора.

Просматриваемая таблица организована вектором; каждый элемент таблицы имеет следующую структуру:

struct Item{

int key; /* ключ элемента; не может быть 0 */

int par; /* ключ родительского элемента */

char *info; /* указатель на информацию */

};

Максимальный размер таблицы ограничен (для задания максимального размера таблицы использовать константу – например, const int SIZE = ...;). Элементы таблицы упорядочены по значению ключа родительского элемента. Значение ключа родительского элемента может дублироваться в таблице.

Предусмотреть следующие операции:

  • включение нового элемента в таблицу при условии, что в таблице не может быть двух элементов с одинаковыми ключами и значение ключа родительского элемента должно совпадать с каким-нибудь значением ключа элемента, существующего в таблице, или быть равным 0. Если при включении нового элемента возникает какая-либо ошибочная ситуация, на экран должно быть выведено соответствующее сообщение об ошибке;

  • удаление из таблицы элемента, заданного своим ключом, при условии, что в таблице нет элементов, в поле ключа родительского элемента которых указано значение, совпадающее с заданным. Если при удалении элемента возникает какая-либо ошибочная ситуация, на экран должно быть выведено соответствующее сообщение об ошибке;

  • поиск в таблице элемента по заданному ключу; результатом поиска должна быть копия найденного элемента. Если запрошенный элемент в таблице отсутствует, вывести на экран сообщение об ошибке;

  • вывод содержимого таблицы на экран.

Разработать два варианта программы:

  1. и сама таблица, и информация, относящаяся к элементу таблицы, хранятся в основной памяти;

  2. и сама таблица, и информация, относящаяся к элементу таблицы, хранятся во внешней памяти (используется двоичный файл произвольного доступа). Все операции выполняются с таблицей, размещенной в основной памяти. Таблица считывается из файла (или создается в первый раз) в начале сеанса работы и записывается в файл в конце сеанса работы. Информация, относящаяся к элементу таблицы, записывается в файл сразу же при выполнении операции включения в таблицу. Имя файла вводится по запросу из программы.

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