Записи в линейном списке содержат ключевое поле типа *char(строка символов). Сформировать двунаправленный список. Удалить элемент с заданным ключом. Добавить К элементов перед элементом с заданным номером.
Написать программу, в которой необходимо объявить структуру данных в соответствии с вариантом. Написать все необходимые функции для работы со структурой:
- функцию, которая размещает структуру в памяти и возвращает указатель на нее;
- функцию, удаляющую структуру из памяти;
- функцию для установки полей структуры, например:
- функции, возвращающие значения полей, например:
- функцию для просмотра структуры (вывода значений ее полей).
Разместить структуры в динамической памяти, объединив их в список. Написать все необходимые функции для работы со списком:
- функцию, добавляющую структуру в список;
- функцию, удаляющую структуру из списка;
- функцию, возвращающую количество элементов в списке.
Написать функцию, выполняющую запрос (пример запроса для каждого варианта приведен в таблице). Сохранить список в файле.
Таблица.
Примеры вариантов
Вариант | Структура | Поля структуры | Пример запроса |
1 | СТУДЕНТ | имя- char* | Имена студентов указанного курса |
курс- int | |||
пол- bool | |||
2 | СЛУЖАЩИЙ | имя- char* | Количество служащих со стажем не меньше заданного |
профессия - char* | |||
рабочийстаж- int | |||
3. | АВТОМОБИЛЬ | марка - char* | Марки автомобилей мощностью не более заданной |
мощность – int | |||
стоимость - float | |||
4 | КАДРЫ | имя- char* | Имена рабочих заданного разряда |
номерцеха- int | |||
разряд- int | |||
5 | ЦЕХ | имя- char* | Наименование продукции, количество которой не менее заданного |
начальник- char* | |||
кол-во рабочих -int | |||
6 | ИЗДЕЛИЕ | наименование- char* | Наименования изделий, количество которых не более заданного |
шифр- char* | |||
количество -int | |||
7 | БИБЛИОТЕКА | имя- char* | Количество книг указанного автора |
автор- char* | |||
стоимость -real | |||
8 | ЭКЗАМЕН | имястудента- char* | Имена студентов, сдававших экзамен в заданный день |
дата- int | |||
оценка -int | |||
9 | АДРЕС | имя -char* | Имена живущих на четной стороне заданной улицы |
улица -char* | |||
номер дома -int | |||
10 | ТОВАР | имя -char* | Наименование товара, стоимостью не выше заданной |
количество -int | |||
стоимость -real | |||
11 | КВИТАНЦИЯ | номер -int | Общая сумма всех квитанций указанной даты |
дата -int | |||
сумма -real | |||
12 | СТРАНА | название- char* | Название стран, площадью не меньше заданной |
денежная единица- char* | |||
площадь -float | |||
13 | ПОЕЗД | номер- char* | Номера всех поездов указанного типа |
тип- char* | |||
кол-во вагонов -int | |||
14 | ИГРА | наименование- char* | Наименование игры указанного типа и со стоимостью не выше заданной |
тип- char* | |||
стоимость -float | |||
15 | ПЛАНЕТА | имя- char* | Имя планет с расстоянием от Земли не больше заданной |
размер- real | |||
расстояние от Земли -real | |||
16 | ЖИВОТНОЕ | имя- char*класс -char*средний вес -float | Имена всех животных заданного класса |
17 | ФОТОАППАРАТ | модель- char* | Модели фотоаппаратов с размером матрицы не меньше заданной |
изготовитель- char* | |||
размер матрицы -int | |||
18 | КОРАБЛЬ | имя- char* | Среднее водоизмещение кораблей заданного типа |
тип- char* | |||
водоизмещение -int | |||
19 | РЕКА | имя- char* | Среднюю длину реки на указанном континенте |
континент- char* | |||
длина -float | |||
20 | БЛЮДО | название- char* | Общую стоимость заказа |
тип- char* | |||
стоимость -float |
Напишите программу, которая читает текст Си-программы и печатает в алфавитном порядке все группы имен переменных, в которых совпадают первые 6 символов, но последующие в чем-то различаются. Не обрабатывайте внутренности закавыченных строк и комментариев. Число 6 сделайте параметром, задаваемым в командной строке.
Напишите программу печати таблицы "перекрестных ссылок", которая будет печатать все слова документа и указывать для каждого из них номера строк, где оно встретилось. Программа должна игнорировать "шумовые" слова, такие как "и", "или" и пр.
Напишите программу, которая печатает весь набор различных слов, образующих входной поток, в порядке возрастания частоты их встречаемости. Перед каждым словом должно быть указано число вхождений.
1. Керниган Б., Ритчи Д., Фьюэр А. Язык программирования Си: Задачи по языку Си. М.: Финансы и статистика, 1985. – 192с.
2. Керниган Б., Ритчи Д. Язык программирования Си. М.:Финансы и статистика, 1992. - 272с.
3. Подбельский В. В., Фомин С. С. Программирование на языке Си. Учеб.пособие. М.: Финансы и статистика, 2004. 600 с.