Скачать презентацию Лекция 9 Структуры Языки и методы программирования Ст Скачать презентацию Лекция 9 Структуры Языки и методы программирования Ст

ЯиМП_Лекция 9_C_Структуры.ppt

  • Количество слайдов: 25

Лекция 9. Структуры. Языки и методы программирования. Ст. преп. М. А. Сокольская Лекция 9. Структуры. Языки и методы программирования. Ст. преп. М. А. Сокольская

План. 1. 2. Понятие структуры. Способы задания структур: 1. 2. 3. 4. 2 Через План. 1. 2. Понятие структуры. Способы задания структур: 1. 2. 3. 4. 2 Через тип данных; Без указания имени; С указанием метки. Массивы структур. Примеры.

Структуры. Определение 1. Структура – составной тип данных, в который входит множество компонент любых Структуры. Определение 1. Структура – составной тип данных, в который входит множество компонент любых типов, за исключением функций. Существует несколько способов структуры в программе. 3 описания

Описание структуры с явным заданием имени типа. Синтаксис: typedef struct { список описаний } Описание структуры с явным заданием имени типа. Синтаксис: typedef struct { список описаний } имя типа; имя_типа список_переменных; typedef – спецификатор, позволяющий создать собственное имя нового типа данных. 4

Пример. 5 typedef struct { char name[30]; int id; dept d; //предварительно определенные family Пример. 5 typedef struct { char name[30]; int id; dept d; //предварительно определенные family f; //структуры } employee; employee person, eq, e 2; /*определение переменных типа employee*/

Описание структуры с одновременным описанием переменных 6 Синтаксис. struct { список описаний } список Описание структуры с одновременным описанием переменных 6 Синтаксис. struct { список описаний } список переменных; Пример. struct { int year; short int month, day; } date 1, date 2;

Описание структуры с одновременным описанием переменных При таком описании структура не имеет собственного имени, Описание структуры с одновременным описанием переменных При таком описании структура не имеет собственного имени, поэтому объявить в дальнейшем тексте программы дополнительные переменные задаваемого типа нельзя. 7

Описание структуры с указанием метки структуры Синтаксис. struct имя_метки_структуры { описание компонент }; struct Описание структуры с указанием метки структуры Синтаксис. struct имя_метки_структуры { описание компонент }; struct имя_метки_структуры имя_переменной; 8 Этот способ описания структуры используется чаще всего.

Пример. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Имеется информация о багаже Пример. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Имеется информация о багаже нескольких пассажиров. Подсчитать общее количество вещей и выяснить имеется ли пассажир, багаж которого состоит из одной вещи весом более 30 кг. 9

Struct luggage { float weight; int number; }; int main () { luggage info; Struct luggage { float weight; int number; }; int main () { luggage info; int i, n, sum=0, f=0; cout<<“Введите число пассажиров”; cin>>n; 10

11 cout<<“Вводите пары чисел (количество и вес)”; for (i=1; i<=n; i++) { cin>>info. weight; 11 cout<<“Вводите пары чисел (количество и вес)”; for (i=1; i<=n; i++) { cin>>info. weight; cin>>info. number; sum=sum+ info. number; if (info. number==1 && info. weight>=30) f=1; } if (f) cout<<“Искомый пассажир имеется”; cout<<“Суммарное количество вещей - ”<

Массивы структур Используются в том случае, если одной переменной-структуры для решения задачи недостаточно и Массивы структур Используются в том случае, если одной переменной-структуры для решения задачи недостаточно и требуется хранить информацию о нескольких одинаковых элементах. 12

Пример. 13 struct dinner { char *plase; float cost; struct dinner *next; }; struct Пример. 13 struct dinner { char *plase; float cost; struct dinner *next; }; struct dinner week_days[7]; //массив структур struct dinner best_one; //одна переменная struct dinner *p; /*указатель на структурную переменную*/ p=new dinner; //выделяем память под структуру

Доступ к компонентам структуры Через обычную переменную структурного типа: имя_переменной. имя_компоненты 2. Через указатель Доступ к компонентам структуры Через обычную переменную структурного типа: имя_переменной. имя_компоненты 2. Через указатель на структурную переменную 1. a) b) 14 (*имя_указателя). имя_компоненты имя_указателя - > имя_компоненты

Пример. Доступ к компонентам структур date 1. year = 1990; date 1. month = Пример. Доступ к компонентам структур date 1. year = 1990; date 1. month = 12; week_days[1]. cost = 102. 4; week_days[1]. plase = “Калинка”; (*p). cost = 315. 35; p -> plase = “Абажур”; 15

Пример Опишите структуру АНКЕТА и поместите в нее следующую информацию: Ф. И. О. (фамилия, Пример Опишите структуру АНКЕТА и поместите в нее следующую информацию: Ф. И. О. (фамилия, имя, отчество), адрес (улица, номер дома, номер квартиры), пол, возраст. Определите, сколько лиц женского и сколько мужского пола проживают в одном доме. 16

17 struct anketa { char fio [50]; char street [15]; int house; int flat; 17 struct anketa { char fio [50]; char street [15]; int house; int flat; int age; char pol; } spisok [10];

18 int main () { int man=0, woman=0; int n, i; cout<<“Введите количество жителей”; 18 int main () { int man=0, woman=0; int n, i; cout<<“Введите количество жителей”; cin>>n; cout<<“Вводите данные о жителях дома”; for (i=0; i>spisok[i]. fio;

19 cout<<“Улица”; cin>>spisok[i]. street; cout<<“Номер дома”; cin>>spisok[i]. house; cout<<“Номер квартиры”; cin>>spisok[i]. flat; cout<<“Возраст”; cin>>spisok[i]. 19 cout<<“Улица”; cin>>spisok[i]. street; cout<<“Номер дома”; cin>>spisok[i]. house; cout<<“Номер квартиры”; cin>>spisok[i]. flat; cout<<“Возраст”; cin>>spisok[i]. age; cout<<“Пол”; cin>>spisok[i]. pol; }

for (i=0; i<n; i++) if (spisok[i]. pol==‘м’) man++; else woman++; cout<<“Количество мужчин: ”<<man; cout<<“Количество for (i=0; i

Пример. Вывод на экран часов, минут и секунд. #define DELAY 128000 struct my_time { Пример. Вывод на экран часов, минут и секунд. #define DELAY 128000 struct my_time { int hours; int minutes; int seconds; }; void display (struct my_time *t); void update (struct my_time *t); void delay (void); 21

int main (){ struct my_time systime; systime. hours=0; systime. minutes=0; systime. seconds=0; for ( int main (){ struct my_time systime; systime. hours=0; systime. minutes=0; systime. seconds=0; for ( ; ; ) { update(&systime); display(& systime); } return 0; } 22

23 void update (struct my_time *t) { t->seconds ++; if (t->seconds == 60) { 23 void update (struct my_time *t) { t->seconds ++; if (t->seconds == 60) { t->seconds = 0; t->minutes ++; } if (t-> minutes == 60) { t->minutes = 0; t->hours ++; } if (t->hours == 24) t->hours = 0; delay(); }

24 void update (struct my_time *t) { printf(“%2 d: ”, t->hours); printf(“%2 d: ”, 24 void update (struct my_time *t) { printf(“%2 d: ”, t->hours); printf(“%2 d: ”, t->minutes); printf(“%2 d: ”, t->seconds); } void delay () { long int t; for (t=0; t

Итоги Мы рассмотрели: Описание структуры Динамическое выделение памяти для структур Массивы структур 25 Итоги Мы рассмотрели: Описание структуры Динамическое выделение памяти для структур Массивы структур 25