
- •Вариант 1*
- •Примечания:
- •Вариант 2*
- •Int key; /* ключ элемента */
- •И сама таблица, и информация, относящаяся к элементу таблицы, хранятся в основной памяти;
- •Примечания:
- •Программа должна содержать несколько функций; функция main должна выполнять: вывод меню, ввод и анализ ответа, вызов на исполнение требуемой функции;
- •Вариант 3*
- •Int key; /* ключ элемента */
- •Примечания:
- •Вариант 4*
- •Примечания:
- •Вариант 5*
- •Примечания:
- •Вариант 6*
- •Примечания:
- •Вариант 7*
- •Примечания:
- •Вариант 8*
- •Примечания:
- •Вариант 9*
- •Примечания:
- •Вариант 10**
- •Примечания:
- •Вариант 11**
- •Примечания:
- •Вариант 12**
- •Примечания:
- •Вариант 13**
- •Примечания:
- •Вариант 14**
- •Примечания:
- •Вариант 15**
- •Примечания:
- •Вариант 16**
- •Примечания:
- •Вариант 17**
- •Примечания:
- •Вариант 18**
- •Примечания:
- •Вариант 19**
- •Примечания:
- •Вариант 20**
- •Примечания:
- •Вариант 21**
- •Примечания:
- •Вариант 22**
- •Примечания:
- •Вариант 23**
- •Примечания:
- •Вариант 24**
- •Примечания:
- •Вариант 25**
- •Примечания:
- •Вариант 26**
- •Примечания:
- •Вариант 27***
- •Примечания:
- •Вариант 28***
- •Примечания:
- •Вариант 29***
- •Примечания:
- •Вариант 30***
- •Примечания:
- •Вариант 31***
- •Примечания:
- •Вариант 32***
- •Примечания:
- •Вариант 33***
- •Примечания:
- •Вариант 34***
- •Примечания:
- •Вариант 35***
- •Примечания:
- •Вариант 36***
- •Примечания:
- •Вариант 37***
- •Примечания:
- •Вариант 38***
- •Примечания:
- •Вариант 39***
- •Примечания:
- •Вариант 40***
- •Примечания:
Вариант 35***
Написать программу для работы с перемешанными таблицами, использующими перемешивание сцеплением, по запросам оператора.
Перемешанные таблицы представлены массивами указателей на элементы таблицы. Элементы первой (родительской) таблицы имеют следующую структуру:
struct Parent{
int key; /* ключ элемента */
char *info; /* указатель на информацию */
Parent *next; /* указатель на следующий элемент */
};
Элементы второй (дочерней) таблицы имеют следующую структуру:
struct Child{
int key; /* ключ элемента */
int pkey; /*ключ элемента из родительской таблицы */
char *info; /* указатель на информацию */
Child *next; /* указатель на следующий элемент */
};
Максимальные размеры массивов ограничены (для задания максимального размера использовать константы – например, const int SIZEP = ..., SIZEC = ...;).
Предусмотреть следующие операции:
включение нового элемента в родительскую таблицу при условии, что в таблице не может быть двух элементов с одинаковыми ключами;
включение нового элемента в дочернюю таблицу при условии, что в таблице также не может быть двух элементов с одинаковыми ключами; кроме того, значение pkey должно совпадать с каким-либо значением key родительской таблицы.
удаление элемента из родительской таблицы по заданному ключу. При этом в дочерней таблице не должно быть ни одного элемента, имеющего в поле pkey значение ключа удаляемого элемента;
вывод содержимого таблиц на экран.
Если при выполнении операций с таблицами возникает ошибочная ситуация, на экран должно быть выведено соответствующее сообщение об ошибке.
Разработать два варианта программы:
и сами таблицы, и информация, относящаяся к элементам таблиц, хранятся в основной памяти;
и сами таблицы, и информация, относящаяся к элементам таблиц, хранятся во внешней памяти (используется двоичный файл произвольного доступа). Все операции выполняются с таблицами, размещенными в основной памяти. Таблицы считываются из файлов (или создаются в первый раз) в начале сеанса работы и записываются в файлы в конце сеанса работы. Информация, относящаяся к элементам таблицы, записывается в файлы сразу же при выполнении операции включения в таблицу. Имена файлов вводятся по запросу из программы.
Примечания:
Программа должна содержать несколько функций; функция main должна выполнять: вывод меню, ввод и анализ ответа, вызов на исполнение требуемой функции;
В программе нужно предусмотреть проверку правильности ввода данных;
Для варианта b) следует модифицировать структуру, определяющую элемент таблицы, включив в нее длину информации и ее смещение в файле;
В варианте b) для работы с файлом использовать функции пакета stdio.h; чтение и запись выполнять с помощью fread() и fwrite(), в которых должна быть указана реальная длина информации.
Вариант 36***
Написать программу для работы с перемешанными таблицами, использующими перемешивание сложением, по запросам оператора.
Перемешанные таблицы представлены векторами. Элементы первой (родительской) таблицы имеют следующую структуру:
struct Parent{
int key; /* ключ элемента */
char *info; /* указатель на информацию */
Parent *next; /* указатель на следующий элемент */
};
Элементы второй (дочерней) таблицы имеют следующую структуру:
struct Child{
int key; /* ключ элемента */
int pkey; /*ключ элемента из родительской таблицы */
char *info; /* указатель на информацию */
Child *next; /* указатель на следующий элемент */
};
Максимальные размеры векторов ограничены (для задания максимального размера использовать константы – например, const int SIZEP = ..., SIZEC = ...;).
Предусмотреть следующие операции:
включение нового элемента в родительскую таблицу при условии, что в таблице не может быть двух элементов с одинаковыми ключами;
включение нового элемента в дочернюю таблицу при условии, что в таблице также не может быть двух элементов с одинаковыми ключами; кроме того, значение pkey должно совпадать с каким-либо значением key родительской таблицы.
удаление элемента из родительской таблицы по заданному ключу. При этом в дочерней таблице не должно быть ни одного элемента, имеющего в поле pkey значение ключа удаляемого элемента;
вывод содержимого таблиц на экран.
Если при выполнении операций с таблицами возникает ошибочная ситуация, на экран должно быть выведено соответствующее сообщение об ошибке.
Разработать два варианта программы:
и сами таблицы, и информация, относящаяся к элементам таблиц, хранятся в основной памяти;
и сами таблицы, и информация, относящаяся к элементам таблиц, хранятся во внешней памяти (используется двоичный файл произвольного доступа). Все операции выполняются с таблицами, размещенными в основной памяти. Таблицы считываются из файлов (или создаются в первый раз) в начале сеанса работы и записываются в файлы в конце сеанса работы. Информация, относящаяся к элементам таблицы, записывается в файлы сразу же при выполнении операции включения в таблицу. Имена файлов вводятся по запросу из программы.