Прямой доступ к элементам
1) date1[5].day=10;
2) date1[5].year=1991;
3) strcpy (book1.title, “Война и мир”);
/* используя прямое обращение к элементу, присваиваем значение выбранной переменной. Текс помещается в переменную, используя функцию копирования – strcpy(); */
4) stud[3].birthday.month=1;
5) stud[3].birthday.year=1980;
Доступ по указателю
1) (date1+5)->day=10;
2) (stud+3)->birthday.month=1;
// Используя доступ по указателю на структуру, присваиваем значение соответствующей переменной. Указатель можно использовать и так:
3) (*(date1+5)).day=10;
4) (*(stud+3)).birthday.month=1;
Инициализация структур. При определении структурных переменных можно инициализироватьих поля. Эта возможность подобна инициализации массива и следует тем же правилами:
имя_шаблона имя_переменной_структуры = {значение1, значение2, ]};
Компилятор присваивает значение1 первой переменной в структуре, значение2 – второй переменной структуры и т.д., и тут необходимо следовать некоторым правилам:
- присваиваемые значения должны совпадать по типу с соответствующими полями структуры;
- можно объявлять меньшее количество присваиваемых значений, чем количество полей. Компилятор присвоит нули остальными полями структуры;
- список инициализации последовательно присваивает значения полям структуры, вложенных структур и массивов.
Пример:
Копирование структур-переменных. Язык С(С++) позволяет оператору присваивания копироватьзначения одной структуры-переменной в другую переменную, при условии, что обе структуры-переменные относятся к одному и тому же типу. Таким образом, единственный оператор может скопировать несколько членов данных, которые включают массивы и вложенные структуры.
Однако следует учитывать, что оператор присваивания выполняет то, что называется поверхностной копией в применении к структурам-переменным. Поверхностная копия представляетсобой копирование бит за битом значений полей переменной-источника в соответствующие поля переменной-цели. При этом может возникнуть проблема с такими членами данных, как указатели, поэтому использовать поверхностное копирование структур надо осторожно.
Пример: Создать массив структур о студентах группы. О каждом студенте записать: имя,фамилию, год рождения, оценки по пяти экзаменам. Определить средний балл за сессию и отсортировать список по сумме баллов.
Сортировка — последовательное расположение или разбиение на группы чего-либо в зависимости от выбранного критерия.
В языке с++ есть специальная функция sort. Она очень гибкая и универсальная. Для подключения используйте следующую запись #include <algorithm>
Ее синтаксис:
sort(ссылка на 1 элемент массива, ссылка на элемент после массива, условие сортировки);
Условие сортировки пишется в отдельной функции. Сортировать можно все типы, даже строки!
Есть стандартная запись этой функции: sort(a,a+n), где aимя массива, nего длина. Данная запись подходит если необходимо отсортировать в порядке возрастания и массив однотипный!!!
Задание к лабораторной работе № 6
В отчете должны находиться:
1) Все набранные примеры.
2) программа (код и скриншот выполнения), которая решает поставленную задачу вашего варианта
3) Уметь отвечать на поставленные вопросы.
Варианты:
Ввести массив структур в соответствии с вариантом. Рассортировать массив в алфавитном порядке по первому полю, входящему в структуру. В программе реализовать меню:
1) Ввод массива структур;
2) Сортировка массива структур по заданному параметру;
3) Поиск в массиве структур по заданному параметру;
4) Изменение заданной структуры;
5) Удаление структуры из массива;
6) Вывод на экран массива структур;
7) Выход.
После каждой операции, кроме операции выхода, должно появляться это меню повторно.
Варианты:
1. Структура «Автосервис»: регистрационный номер автомобиля, марка, пробег, мастер, выполнивший ремонт, сумма ремонта.
2. Структура «Сотрудник»: фамилия, имя, отчество; должность; год рождения; заработная плата.
3. Структура «Государство»: название; столица; численность населения; занимаемая
площадь.
4. Структура «Человек»: фамилия, имя, отчество; домашний адрес; номер телефона;
возраст.
5. Структура «Читатель»: Фамилия И.О., номер читательского билета, название книги, срок возврата.
6. Структура «Школьник»: фамилия, имя, отчество; класс; номер телефона; оценки по предметам (математика, физика, русский язык, литература).
7. Структура «Студент»: фамилия, имя, отчество; домашний адрес; группа; рейтинг.
8. Структура «Покупатель»: фамилия, имя, отчество; домашний адрес; номер телефона; номер кредитной карточки.
9. Структура «Пациент»: фамилия, имя, отчество; домашний адрес; номер медицинской карты; номер страхового полиса.
10. Структура «Информация»: носитель; объем; название; автор.
11. Структура «Клиент банка»: Фамилия И.О., номер счета, сумма на счете, дата последнего изменения.
12. Структура «Склад»: наименование товара, цена, количество, процент торговой
надбавки.
13. Структура «Авиарейсы»: номер рейса, пункт назначения, время вылета, дата вылета, стоимость билета.
14. Структура «Вокзал»: номер поезда, пункт назначения, дни следования, время прибытия, время стоянки.
15. Структура «Кинотеатр»: название кинофильма, сеанс, стоимость билета, количество
зрителей.