Слайд 1Структуры.
Массивы структур.
С/С++
Слайд 2Для чего нужен тип структура?
При решении задач обработки большого количества
однотипных данных используют массивы
Чаще встречаются комбинации из данных разных типов:
например, сведения о сотрудниках (фамилия, имя, год рождения, стаж работы)
Для обработки разнотипных данных в языке С\С++ имеется комбинированный тип данных – структура
Слайд 3Что такое структура?
Структура – это тип данных, состоящий из фиксированного
числа компонент одного или различных типов, называемых полями структуры.
Слайд 4В языке С\С++ структура:
Стандартный тип struct
Включает ряд компонент, называемых полями
В
разных полях могут храниться данные разного типа
Структура имеет имя;
поля
структуры также имеют имена
Слайд 5Объявление структуры в программе:
struct Date
{ unsigned int Year;
char
Month[12];
unsigned int Day;
char DayWeek[10];
}
//поля структуры
имеют разные типы
Слайд 6Переменные типа структура
После введения типа структура можно задать переменные или
массивы этого типа
Date D1 = new Date();
Date *ArDate = new
Date[10];
Слайд 7Обращение к полям структуры:
Осуществляется указанием имени переменной и имени
поля через точку
Для указателей используется операция выбора ->
D1.Year=2015;
D1.Month="September\0";
D1.Day=29;
D1.DayWeek="Monday\0"
Слайд 8Ввод и вывод структуры:
Составные имена с указанием полей
можно использовать в операторах ввода-вывода:
cin>>D1.Year>>D1.Month>>D1.Day;
cout
операторах ввода-вывода переменную-структуру целиком:
cout<
Слайд 9Массивы структур:
Для хранения и обработки большого количества структур удобно использовать
массивы структур.
В этом случае сначала объявляется структура, например, Person, а
затем массив, состоящий из некоторого количества структур типа Person.
Слайд 10Пример использования массива структур
Введем структуру Person для описания сведений о
сотруднике: фамилия, имя, пол, год рождения, стаж, должность.
Затем объявим массив,
состоящий из 5 структур типа Person.
Из этого массива можно будет получить выборочные сведения.
Слайд 11Описание структуры и массива структур:
#include
void main()
{
struct Person
{ char
Name[20];
char Profession[15];
unsigned int Year;
unsigned int Stag;
char Pol;
} A[5];
int i, k;
Слайд 12Ввод данных в массив
for (i=0; i
_flushall();
printf("Введите должность:\n");
gets_s(A[i].Profession);
_flushall();
printf("Введите год рождения:\n");
scanf("%u",&A[i].Year);
printf("Введите
стаж:\n");
scanf("%u", &A[i].Stag);
printf("Введите пол (м/ж):\n");
A[i].Pol = getch();
printf("%c",A[i].Pol);
printf("\n-----------------------\n"); }
Слайд 13Вывод массива на экран:
printf("\n фамилия\t должность\t год\t стаж\t пол\n");
// вывод строки-заголовка
printf("\n-------------------------\n");
for (i=0; i
%u\t %u\t %c\n",
A[i].Name, A[i].Profession, A[i].Year, A[i].Stag, A[i].Pol);
}
Слайд 14Выбор сотрудников со стажем
менее 5 лет
for (i=0; i
if (A[i].Stag
A[i].Pol);
}
Слайд 15Поиск мужчин и женщин, достигших пенсионного возраста
for (i=0; i
if (A[i].Pol=='ж' && 2019-A[i].Year>=55 ||
A[i].Pol=='м' && 2019-A[i].Year>=60)
printf("%s\t %s\t
%u\t %u\t %c\n",
A[i].Name, A[i].Profession, A[i].Year, A[i].Stag, A[i].Pol);
}
Слайд 16Вычисление среднего возраста мужчин
int S = 0; k = 0;
float
Sr;
for (i=0; i
+= 2019-A[i].Year;
k++;
}
}
Sr = (float) S/k;
printf("Средний возраст мужчин %0.1f", Sr);
Слайд 20Опишите структуру сведений о товарах: наименование, производитель, цена, количество на
складе.
Объявите массив, состоящий из N структур.
Из этого массива получить выборочные
сведения:
О товарах, которых нет на складе
О товарах с максимальной ценой
Задача 2
Слайд 21Начать программу можно так:
#include
void main()
{
struct Tovar
{ char Name[80];
char Brend[40];
float Prace;
unsigned int Kol;
}
int i, k, N;
printf("Введите количество товаров: ");
scanf(”%i”, &N);
Tovar *T=new Tovar[N];
Слайд 22Задача 3
Составить программу обработки данных о машинах (марка
машины, год выпуска, вид машины: грузовая или легковая, для легковых
машин указать количество посадочных мест, для грузовых – грузоподъемность).
Найти в массиве грузовые и легковые машины определенной марки.
Слайд 23Пример объявления классов с наследованием
class Car
{ char Brend[20];
unsigned int Year; }
// фиксированная часть (базовый класс)
class Sedan
: Car
{ unsigned int Passagir; }
class Truck : Car
{ float Tonn; }
// вариантная часть (дочерние классы)
Слайд 26Выводы:
Структура является значимым, а не ссылочным типом данных, то есть
экземпляр структуры хранит значения своих элементов, а не ссылки на
них
Структура не может участвовать в иерархиях наследования
В программе разрешено напрямую обращаться к полям экземпляра структуры, присваивать им значения
Слайд 27Домашнее задание
Выучить теорию по теме «Структуры».
Задача
Составить программу для
работы с массивом записей о студентах (фамилия, год рождения, группа,
средний балл).
Вывести сведения о студентах определенной группы, средний балл которых выше 4.