
- •Int YearOfTheBirth; //год рождения
- •Int YearOfTheBirth;
- •Void prn () const
- •Int YearOfTheBirth;
- •Void prn () const;
- •Inline void student :: prn() const
- •Int YearOfTheBirth;
- •Void prn () const;
- •Inline void student :: prn() const
- •Пример выполнения работы (структура боксер):
- •Void prn () const
- •Int main()
Задание к лабораторной работе № 6
Разработать программу, создающую структуру и ее экземпляры. Структура должна содержать поля (см. свой вариант). Кроме того, в структуру должна входить функция вывода значений полей и одна из перегруженных операций (+, >,< ,>=,<=). Программа должна демонстрировать оба способа доступа к полям структуры и работу функции и перегруженной операции.
Краткую теорию и пример можно рассмотреть по ссылке.
Вариант 1.
Данные для простой складской системы. Структура должна содержать
следующую информацию: фамилию, имя, отчество поставщика, название города местонахождения поставщика, а также уникальный номер детали, ее название, цвет, вес .
Вариант 2.
Сведения об участниках конкурса бальных танцев. Структура должна
содержать следующую информацию: фамилию, имя, отчество участника,
город, фамилию тренера, оценки за каждый из 3-х танцев.
Вариант 3.
Сведения об успеваемости студентов. Структура должна содержать
следующую информацию: фамилию, имя, отчество студента, номер группы,
в которой обучается студент, название учебной дисциплины,
, оценку данного студента по данной дисциплине за
данное задание от 0 до 100 (как % сделанной работы).
Вариант 4.
Сведения о рабочем. Структура должна содержать
следующую информацию: фамилию, имя, отчество рабочего, название цеха,
в котором он работает, его разряд и оклад.
Вариант 5.
Учет изделий, собранных в цехе за неделю. Структура должна содержать
следующую информацию: фамилию, имя, отчество сборщика, количество
изготовленных изделий, название цеха, а также тип изделия и его стоимость.
Вариант 6.
Учет изделий категорий А, В, С, собранных рабочим цеха за месяц. База
данных должна содержать следующую информацию: фамилию, имя,
отчество рабочего, название цеха, количество изделий по категориям
Вариант 7.
Сведения об абонентах АТС. Структура должна содержать следующую
информацию: фамилию, имя, отчество владельца телефона, год установки
телефона, номер телефона, тип установки телефона (спаренный или нет),
льготу (процентную скидку при оплате).
Вариант 8.
Сведения об ассортименте игрушек в магазине. Структура должна
содержать следующую информацию: название игрушки, ее цену, количество,
а также название фабрики и города, где изготовлена игрушка.
Вариант 9.
Результаты сессии на первом курсе. Структура должна
содержать следующую информацию: индекс группы, фамилию, имя,
отчество студента, пол студента и оценки по 3
экзаменам.
Вариант 10.
Учет рейтинга теннисистов за 5 лет. Каждая запись содержит поля: фамилия,
имя, отчество спортсмена, пол, год рождения, фамилия, имя, отчество
тренера, названия страны и пять полей с рейтингом.
Вариант 11.
Сведения о рейсах Аэрофлота. Структура должна содержать следующую
информацию: номер рейса, пункт назначения, время вылета, время прибытия,
тип самолета и его вместимость.
Вариант 12.
Сведения об ассортименте обуви в магазине. Структура должна содержать
следующую информацию: артикул, наименование обуви, количество пар,
стоимость одной пары, имеющиеся размеры, название фабрики
Вариант 13.
Сведения о нападающих команды. Структура должна содержать следующую информацию: фамилию, имя, отчество, название команды, дату приема в команду, число заброшенных шайб, количество голевых передач, штрафное время и количество сыгранных матчей.
Вариант 14.
Сведения о выборе дисциплины студентом. Структура должна содержать
следующую информацию: фамилию, имя, отчество студента, номер зачетной
книжки и сведения о том, живет ли студент в общежитии, индекс группы, а
также пять дисциплин (1 – желает изучать, 0 – не желает).
Вариант 15.
Учет золотых изделий в ювелирном магазине. Структура должна содержать
следующую информацию: вид изделия, его вес, пробу, дату поступления и
стоимость, а также фамилию, имя, отчество мастера-изготовителя, стаж его
работы и разряд (1,2,3).
Вариант 16.
Учет оптовых продаж. Структура должна содержать следующую
информацию: наименование товара, цену единицы товара и дату его
поступления, номер партии, размер партии, названии фирмы-покупателя,
размер проданной партии, цену единицы товара и дату продажи.
Вариант 17.
Учет лекарств в аптеке. Структура должна содержать следующую
информацию: наименование лекарства, стоимость одной единицы,
количество единиц, дату изготовления, срок годности, а также название
фабрики, где производится данное лекарство, ее адрес.
Вариант 18.
Сведения о ветеранах спорта. Структура должна содержать следующую
информацию:фамилию, имя, отчество спортсмена, возрастную группа, название города и вид спорта.
Вариант 19.
Учет рождаемости в роддоме. Структура должна содержать следующую
информацию: фамилию, имя, отчество матери, пол ребенка, его вес, рост и
дату рождения ребенка.
Вариант 20.
Сведения об обучающихся на курсах повышения квалификации. Структура должна содержать следующую информацию: фамилию, имя, отчество
слушателя, его пол и адрес, тип организации (коммерческая, государственная),
наименование организации, должность слушателя и оценки по
прослушанным дисциплинам (маркетинг, финансы и кредит) для каждого
слушателя.
Вариант 21.
Сведения о размере стипендии студента. Структура должна содержать
следующую информацию: фамилию, имя, отчество студента, группу, адрес,
по которому проживает студент, размер стипендии.
Вариант 22.
Учет поступления больных. Структура должна содержать следующую
информацию: фамилию, имя, отчество больного, его пол, дату рождения,
дата поступления, номер палаты, куда был помещен больной, и фамилию, имя, отчество лечащего врача.
Вариант 23.
Учет призывников. Структура должна содержать следующую
информацию: фамилию, имя, отчество призывника, год его рождения, адрес,
семейное положение, заключение о пригодности к службе.
Структуры в языке С++.
Проф. кафедры ИТ и ВТ МГТУ им. А.Н. Косыгина Ю.М. Винтер.
Структура - это составной объект, объединяющих одну, чаще несколько переменных одного или разных типов под одним именем. В отличие от массива, который является совокупностью переменных одного типа, структура может содержать данные различных типов. Каждая переменная, включенная в структуру, называется членом структуры (полем, компонентом, элементом). Структура является новым типом данных, описание которого начинается с служебного слова struct , затем следует выбранное программистом имя (идентификатор ) нового типа данных, далее в фигурных скобках помещается список описаний членов структуры вида тип идентификатор; . После фигурных скобок ставится точка с запятой. Список описаний не может быть пустым.
В приведенном ниже примере идентификатор student является именем нового типа данных.
struct student { char name[70];
Int YearOfTheBirth; //год рождения
char grupp[6];
};
Это имя может быть использовано для последующего объявления экземпляров структур
данного типа.
student stud1, stud2, fitae[500];
Здесь выделяется память под 2 переменные и массив типа student.
Члены(поля) структуры могут иметь не только базовый, но и производные типы данных: массивы, классы, объединения и структуры. Член структуры не может быть структурой того же типа, что и содержащая его структура. Зато он может иметь тип указателя на структуру того же типа, что и содержащая его структура. Это позволяет создавать весьма полезные объекты - динамические списки и деревья
Доступ к членам (полям) структуры осуществляется с помощью указания имени(идентификатора) экземпляра структуры и следующего через точку имени члена (поля) структуры , например:
stud1.name="Деев Лев Иванович";
stud1. YearOfTheBirth =1987;
stud1.grupp = "40/05" ;
stud2.name = "Главашки Ия Робертовна";
Таким образом, имя переменной типа структура может быть произвольным, но имена полей должны быть такими, как в описании типа структуры. Инициализацию переменной stud1 можно было выполнить при ее объявлении и следующем образом
student stud1 ={"Деев Лев Иванович",1987, "40/05"};
Если в фигурных скобках не будет указано значение некоторых (последних в порядке следования полей ) , то значениями числовых полей будет 0 , полей – указателей NULL, полей типа char -. ‘\0’.
Второй вариант доступа к полям структуры – по указателю на структуру. Напоминаю, указателем называется переменная (или константа), содержащая адрес другой переменной (или константы). Доступ к членам структуры по указателю осуществляется с помощью имени (индентификатора) указателя на структуру и следующего после ─> имени(идентификатора) члена структуры (поля), например:
student stud1 ={"Деев Лев Иванович",1987, "40/05"};
student * ptr = &stud1; //объявляется указатель на структуру типа student, он
//инициализируется адресом переменной типа student
cout << ptr ─> grupp; // будет выведено на дисплей 40/05
Выражение stud2 = stud1 означает копирование значений полей структуры stud1 в соответствующие поля структуры stud2. Функции С и С++ могут использовать структуры в качестве своих аргументов и возвращаемого значения.
Структура (только в С++, но не в С) может содержать функции, как члены структуры. Эти функции не занимают места в памяти, выделенной под конкретные экземпляры и имеют непосредственный доступ к данным, являющимся членами (полями) структуры (т.е. не требуется передача этих данных, как аргументов функции). Включим для примера в состав структуры student функцию prn, выводящую на дисплей значения полей.
struct student { char name[70];
Int YearOfTheBirth;
char* grupp;
Void prn () const
{ cout<< "ФИО "<< name << endl;
cout<< "Год рождения "<< YearOfTheBirth <<endl;
cout<< "Группа "<< grupp << endl;
};
};
Здесь необязательное const после prn () означает, что функция не изменяет значения полей структуры. Пример применения функции – члена структуры:
student stud1 ={"Деев Лев Иванович",1987, "40/05"};
stud1.prn();
Будет выведено на дисплей:
ФИО Деев Лев Иванович
Год рождения 1987
Группа 40/05
В этом случае принято говорить о членах- данных и членах – функциях. В современных языках с видеокомпонентами принято члены- данные называть свойствами, а члены – функции – методами.
Если тело функции присутствует в описании структуры, то это означает , что вы предлагаете компилятору (инструкция inline) не хранить переведенный на машинный язык код функции в определенном месте памяти, а вставлять этот код в программу столько раз, сколько встречается вызов этой функции. При этом увеличивается быстродействие, но растет объем exe – файла. Компилятор не обязан выполнять это ваше указание, и не будет этого делать, если в теле функции есть цикл или сложные, вложенные операторы if . Если структура содержит много функций, или функция не может быть inline, или вас больше волнует объем exe – файла, то в описании структуры должны присутствовать только прототипы функций, а заголовки функций и их тела должны располагаться вне описания структуры. Пример:
struct student { char name[70];