Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11_лаб.doc
Скачиваний:
2
Добавлен:
09.08.2019
Размер:
43.52 Кб
Скачать

Лабораторная работа 11 Структуры

Наряду с массивами в Си/Си++ имеются агрегаты данных типа структур

Тип структуры представляет собой упорядоченную совокупность данных различных типов, к которой можно обращаться как к единому данному. Описание структурного типа строится по схеме:

struct идентификатор

{ деклараторы членов } деклараторы_инициализаторы;

Такое объявление выполняет две функции, во -первых объявляется структурный тип,

во-вторых объявляются переменные этого типа.

Идентификатор после ключевого слова struct является именем структурного типа. Деклараторы_инициализаторы объявляют конкретные переменные структурного типа, т.е. данные описанного типа, указатели на этот тип и массивы данных. Деклараторы_инициализаторы могут отсутствовать, в этом случае объявление описывает только тип структуры.

Структура, описывающая точку на плоскости, может быть определена так:

struct Point_struct // Имя структуры

{ int x, y; } // Деклараторы членов структуры

point1, *ptr_to_point, arpoint [3]; // Данные структурного типа

Члены (компоненты) структуры описываются аналогично данным соответствующего типа и могут быть скалярными данными, указателями, массивами или данными другого структурного типа. Например, для описания структурного типа "прямоугольник со сторонами, параллельными осям координат" можно предложить несколько вариантов:

struct Rect1

{ Point p1; // Координаты левого верхнего угла

Point p2 ; // Координаты правого нижнего угла

} ;

struct Rect2

{ Point p [ 2 ];

} ;

struct Rect3

{ Point p; // Левый верхний угол

Int width; // Ширина

Int high; // Высота прямоугольника

} ;

Поскольку при описании членов структуры должны использоваться только ранее определенные имена типов, предусмотрен вариант предварительного объявления структуры, задающий только имя структурного типа. Например, чтобы описать элемент двоичного дерева, содержащий указатели на левую и правую ветви дерева и указатель на некоторую структуру типа Value, содержащую значение данного в узле, можно поступить так:

struct Value;

struct Tree_element

{ Value * val;

Tree_element *left, *right;

};

Задания к лабораторной работе

  1. Написать программу для обработки информации о товарах, хранящихся на складе. Информация включает в себя: Наименование товара. Стоимость товара. Страна-производитель товара. Конечный срок реализации товара. Количество, имеющегося товара. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список товаров, с истекающим сроком реализации (меньше месяца).

  2. Написать программу для обработки паспортных данных. Информация включает в себя: Фамилия. Имя. Отчество. Дата рождения. Серия паспорта. Номер паспорта. Дата выдачи. Кем выдан. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список лиц, в паспорт которых необходимо вклеить новую фотографию.

  3. Написать программу для обработки информации о странах мира. Информация включает в себя: Название страны. Площадь страны. Население страны. Государственный язык. Денежная единица. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список стран, плотность населения в которых превышает плотность, указанную пользователем.

  4. Написать программу для обработки информации о продуктах питания. Информация включает в себя: Название продукта. Калорийность продукта. Содержание в продукте витаминов (А, В, С, Е, Р, РР). Стоимость 1 кг продукта. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список продуктов, содержащих витамины, указанные пользователем.

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

  6. Написать программу для обработки информации о животных, представленных на выставку кошек. Информация включает в себя: Кличка. Порода. Возраст. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список животных, указанной породы и возраста.

  7. Написать программу для обработки информации о книгах. Информация включает в себя: Автор. Название. Издательство. Год издания. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список книг, требуемого автора, изданных до 1990г.

  8. Написать программу для обработки информации о пассажирах. Информация включает в себя: ФИО пассажира. Номер рейса. Вес багажа. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список пассажиров, багаж которых превышает 10 кг.

  9. Написать программу для обработки информации о студентах. Информация включает в себя: ФИО студента. Группа. Пол. Экзаменационные оценки по высшей математике, вычислительной математике и физике. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список студентов мужского пола, у которых оценка по вычислительной математике ниже средней оценки по вычислительной математике.

  10. Написать программу для обработки информации о сотрудниках фирмы. Информация включает в себя: ФИО сотрудника. Год рождения. Пол. Должность. Срок работы в фирме. Заработная плата. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список сотрудников женского пола, для которых срок работы в фирме меньше указанного.

  11. Написать программу для обработки информации об автомобилях, сдающихся на прокат. Информация включает в себя: Марка автомобиля. Год выпуска. Длина пробега. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список автомобилей требуемого года выпуска с требуемой длиной пробега.

  12. Написать программу для обработки информации о матричных принтерах. Информация включает в себя: Название принтера. Фирма-производитель. Скорость печати. Размер буфера. Габариты: Высота Ширина Длина Вес Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список принтеров со скоростью печати выше средней.

  13. Написать программу для обработки информации о текстовых процессорах. Информация включает в себя: Название. Стоимость. Максимальное число окон. Поиск опечаток. Многоколонковый набор. Фоновая печать. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список текстовых процессоров, удовлетворяющих требованиям, указанным пользователем.

  14. Написать программу для обработки информации о произведениях искусства, выставленных на аукционную продажу. Информация включает в себя: Номер лота. Название произведения. Автор. Материал. Начальная стоимость. Программа должна позволять пользователю: Считывать данные с клавиатуры и заносить их в файл. Считывать данные из файла и выводить на экран список лотов, стоимость которых не больше стоимости, указанной пользователем.

  15. Написать программу для ведения учета торговых операций фирмы. О каждой торговой операции должны сохраняться следующие сведения: регистрационный номер, сущность сделки, объем, форма расчета (нал., безнал., бартер), дата совершения. Ввести информацию о N сделках (N выбрать самостоятельно) и упорядочить бартерные сделки по убыванию их объема.

  16. На автовокзале в ЭВМ хранится информация об автобусных рейсах: номер рейса, пункты отправления и назначения, время прибытия и отправления, тип автобуса (ПАЗ, ЛАЗ, ЛиАЗ, Икарус). Для каждого типа автобуса известна его пассажировместимость (она хранится в специальном массиве). Ввести информацию об N рейсах (N выбрать самостоятельно) и вывести для указанного пункта назначения максимальное количество пассажиров, прибывающих туда на всех рейсах в течение дня.

  17. В курортном гостиничном хозяйстве хранится информация о свободных номерах в гостиницах: класс (двухместный, одноместный люкс, двухместный люкс и т.д.), количество номеров, стоимость номера в сутки, наименование гостиницы ("Звездочка", "Дружба", "Морская", "Прибой", "Турист"). Вывести по требованию клиента список всех гостиниц, в которых есть нужное количество номеров требуемого класса, упорядоченный в порядке возрастания цены.

  18. В библиотеке имеется каталог всех книг, выдающихся на абонементе. В этом списке о каждой книге хранится следующая информация: автор(ы), название, объем (в страницах), количество экземпляров в библиотеке, "жанр" (учебные пособия, классическая художественная литература, современный детектив, современная фантастика). Предоставить возможность просмотра всей литературы определенного "жанра", а также вывести список всех учебных пособий объемом более 200 страниц.

  19. В прайс-листе фирмы записана информация о компьютерах, предлагаемых к продаже: тип процессора (i80386DX, i80486SX, i80486DX, i80486DX2, i80486DX4, Pentium), тактовая частота, объем оперативной памяти, объем кэш-памяти, цена ($). Исходя из требований покупателя выдать список компьютеров, удовлетворяющих его запросам, упорядоченный по типу процессора.

  20. В ЭВМ аэропорта хранится информация о рейсах: номер рейса, пункт назначения, тип самолета (Як-40, Ту-134, Ту-154, Ан-24, Боинг-747), время прибытия и отлета, время полета. Вывести на экран общее время полетов для требуемого типа самолетов.

  1. Написать программу для регистрации собак, участвующих в выставке. Регистрационная карточка включает следующие пункты: порода (овчарка, бульдог, бультерьер, ньюфаундленд, спаниель, пудель), кличка, пол (сука, кобель), возраст. Упорядочить список по породам собак и вывести полную информацию о собаках интересующей пользователя породы, участвующих в выставке.

  2. В автосалоне имеется список предлагаемых к продаже автомобилей. О каждом автомобиле в списке приводится следующая информация: марка (Жигули, Волга, Москвич, Запорожец, Mercedes, Opel, BMV, Ford, Toyota), модель, цена ($), цвет корпуса. Вывести на экран список машин, удовлетворяющих финансовым возможностям покупателя.

  3. Перед проведением парусной регаты оргкомитет проводит регистрацию экипажей. Каждый экипаж сообщает: название яхты, ее класс (Финн, Звездный, Торнадо, Солинг), экипаж, порт приписки. После проведения регаты в базу данных для каждой яхты заносится занятое ею место (среди судов данного класса). Вывести на экран полную информацию о яхтах для каждого класса в соответствии с занятыми местами.