Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_pract_OTP-2004-ukr.doc
Скачиваний:
2
Добавлен:
17.11.2019
Размер:
964.1 Кб
Скачать

3 Розв’язання задач із використанням структур

3.1 Мета роботи

Вивчити і освоїти засоби розроблення програм з використанням структур.

3.2 Підготовка до роботи

Необхідно ознайомитися з основними складеними типами даних (перерахування, суміш, структура) [1, с. 150–164; 2, ç. 110–114; конспект лекцій].

Структура – упорядкована сукупність довільних типів даних, об'єднаних в одній області пам'яті. Тип структури вводиться описанням:

struct [ім’я_struct] {тип 1 ім’я_поля 1;

Тип 2 ім’я_поля 2;

Тип n ім’я_поля n;},

де ім’я_struct – ім'я структури шаблона, що задовольняє правилам завдання ідентифікаторів мови C++; тип 1, тип 2,..., тип n – будь–які призначені типи.

Ім’я_поля 1,..., ім’я_поля n – це ідентифікатори полів, що задовольняють правилам завдання ідентифікаторів. Наприклад:

struct tovar {char name [10];

char nazn [15];

int time;

int price;}

Описання структури являє собою завдання нового типу struct ім’я_struct і не призводить до виділення пам'яті, а лише дасть інформацію компілятора щодо типів і кількості полів. Ця інформація використовується компілятором під час описання структурованих змінних для резервування необхідного місця в пам'яті і організації доступу до необхідних полів структурної змінної.

Описання структурної змінної складається з завдання типу та імені структурної змінної:

struct [ім’я_struct] ім’я_var_struct;

Слід відзначити, що в С++ (версії 4.5 і вище) допускається після оголошення структури використати ім'я структурної змінної (ім’я_struct) як ім'я типу. Наприклад:

Ім'я_struct ім'я_var_struct;

У мові C допускається поєднання опису шаблона структури і структурних змінних. Наприклад:

struct tovar1 {char name [10];

longint price; }tov1, tov2;,

де tov1, tov2 – назва структурних змінних (tov1, tov2 – змінні типу struct tovar1). Доступ до полів структурних змінних виробляється за допомогою оператора«.», що формує заслання на потрібне поле_i структурної змінної:

Ім’я _var_struct. Поле_i.

Такий опис може розташуватися в будь-якому місці, де допустимі описи на прості змінні. Наприклад:

tov1. name='’ volga'’,

tov2. price=12000;

Посилання на поле структурної змінної володіє всіма властивостями звичайних змінних. Наприклад, якщо поле – це масив символів (char name [10];), то tov1.name – покажчик–константа на перший елемент цього масиву, а вираз &tov1.price є одержання адреси першого байта поля price. Немає, також, відмінностей в правилах видимості і часу існування від звичайних змінних.

В тому випадку, коли в функції визначена лише одна структура, допускається використання опису без зазначення імені.

Наприклад:

struct{ char name [10];

long int price;} tov1;.

Оператор покажчика на стуктуру. С++ в доповнення до оператора«.», що використовується для доступу до членів структури, підтримує оператор покажчика на структуру «» для звернення до членів структури. Оператор покажчика на структуру друкується на клавіатурі як поєднання знаків «мінус та більше».

Якщо покажчик на структуру визначений, то доступ до елементів структури можна забезпечити двома засобами:

– використовуючи оператор розіменування

(*вказівник_на_структуру). Ім’я_члена;

– використовуючи оператор покажчика на структуру

Покажчик_на_структуру–> ім’я_члена.

Наприклад:

# include <iostream. h>

# include <stdio. h>

# define n 2

void main ()

{struct stud

{char fam[20];

char gr[7];}std[n],*p=&std[0];

int i;

char m[7];

for(i=0;i<n;i++,p++)

{cout<<"\n"<<'введіть прізвище\n";

cin>>((*p).fam); //gets((*p).fam);

cout<<"\n"<<"введіть місяць народження\n";

cin>>(*p).gr; //gets((*p).gr);

cout<<"\n"<<((*p).fam)<<" "<<((*p).gr);}

p–=n;

cout<<"\n"<<"введіть місяць\n";

cin>>m;

//gets (m);

cout<<"\n"<<(m)<<" "<<(*p).gr<<"\n";

for(i=0;i<n;i++,p++)

{if(strcmp(((*p).gr),m)==0)

cout<<(*p).fam<<"\n"

else

cout<<"нема введеного місяця\n ";}

}

3.3 Варіанти індивідуальних завдань до лабораторної роботи 3

1. Ввести в ЕОМ інформацію щодо співробітника відділу: прізвище, ім'я, вік. Роздрукувати прізвища співробітників, вік яких перевищує 33 роки.

2. Ввести в ЕОМ інформацію щодо номенклатури товарів, що продаються в кіосках інституту. Визначити кіоски, що містять необхідні товари.

3. Сформувати перелік співробітників відділу: прізвище, ім'я, місяць народження. Роздрукувати прізвища співробітників, які народилися в задані місяці.

4. Сформувати список щодо перездачі заборгованостей студентами: ПІБ., предмет, кількість перездач. Роздрукувати список за заданою ознакою (наприклад, за кількостю перездач) і видати його на екран дисплею.

5. Сформувати список, в якому зберігається інформація щодо предметів, речей, вилучених на митниці за звітний період: дата вилучення, назва речі, кількість одиниць, вартість. Визначити кількість одиниць заданого типу предмета.

6. Сформувати відомість щодо фінансової діяльності підприємств за минулий рік, назва підприємства, місяць, прибуток підприємства за цей місяць, нарахування на зарплату, зиск підприємства. Сформувати список підприємств, у яких позитивне відхилення від середньомісячного прибутку перевищує 50%.

7. Сформувати відомість, в якій зберігаються результати сесії групи. Написати щодограму корегування оцінок у студентів, які перездали сесію.

8. У відомості зберігається інформація щодо пропусків занять студентами: ПІБ., предмет, стать, час заняття. Надійшла чергова інформація щодо пропусків. Написати програму і алгоритм розв’язання такої задачі: перевірити наявність у вхідній відомості повторних пропусків занять.

9. У списку міститься інформація щодо володарів гаражного кооперативу: ПІБ., марка автомобіля, номер машини. Написати програму внесення до списку інформації щодо нових членів кооперативу, якщо дані щодо них будуть відсутні у вхідному файлі.

10. У відомості зберігається інформація стосовно заборгованостей студентів: ПІБ., група, курс, предмет. Написати програму вилучення з відомості інформації щодо студентів, анулювавших заборгованості.

11. У списку зберігається інформація щодо студентів, що отримали дозвіл на перездачу іспиту: ПІБ., група, предмет, курс. Сформувати список, що містить інформацію щодо студентів, що отримали дозвіл на перездачу після заданої дати.

12. У списку міститься інформація щодо володарів автотранспорту: ПІБ., марка автомобіля, номер машини. Написати програму формування списку, що містить інформацію щодо автомобілів, в номері яких зустрічаються задані цифри.

13. У відомості зберігається інформація щодо діяльності деяких підрозділів: назва підрозділу, кількість співробітників, зиск, отриманий за поточний квартал. Визначити кращий підрозділ з урахуванням числа співробітників.

14. У розкладі зберігається інформація щодо руху поїздів по станції Харків: номер поїзду, маршрут руху, час відправлення, час прибуття. Необхідно роздрукувати поїзди, що вирушають у заданому діапазоні часу.

15. У звіті зберігається інформація щодо фінансової діяльність підприємств за минулий рік: назва підприємства, місяць, прибуток підприємства за цей місяць, нарахування на зарплату, зиск підприємства. Відсортувати цей звіт у порядку зменшення прибутку і вивести на екран інформацію щодо трьох найбільш прибуткових підприємств.

16. У розкладі зберігається інформація щодо руху поїздів по станції Харків: номер поїзду, маршрут руху, час відправлення, час прибуття. На його базі сформувати новий розклад, що містить інформацію щодо поїздів, які рухаються в заданий кінцевий пункт.

17. Сформувати документ, в якому зберігається інформація щодо асортименту продовольчих товарів в комерційних крамницях: код (назва) крамниці, назва товару, кількість цього товару, ціна за кілограм. Підібрати крамницю або крамниці для оптової закупки заданого товару в заданій кількості так, щоб зменшити витрати на його придбання.

18. Створити документ, в якому зберігається інформація щодо речей, вилучених на митниці за звітний період: дата вилучення, назва речі, код (зброя, продовольчі товари, т. п.), кількість одиниць, вартість одиниці. Визначити групу речей, які найчастіше вилучались.

19. Сформувати список, в якому зберігається інформація щодо співробітників підрозділу: ПІБ., місце народження, рік народження. На його основі сформувати новий список співробітників, які народилися в даному місті і роздрукувати його.

20. Створити список, в якому зберігається інформація щодо абонентів АТС: ПІБ., місце проживання, номер телефону. Необхідно упорядкувати перелік абонентів за алфавітом.

21. У звіті зберігається інформація щодо ліцензій, виданих на придбання газової зброї: ПІБ., дата видачі ліцензії, тип зброї, її вартість. Необхідно вивести на екран всі записи із заданою вартістю

22. Сформувати документ, в якому зберігається інформація щодо академічної заборгованості по факультетах за три роки. Написати програму визначення факультету з максимальною і мінімальною кількістю заборгованостей.

23. Сформувати список, в якому зберігається інформація щодо асортименту продовольчих товарів у комерційних крамницях: код (назва) крамниці, назва товару, кількість цього товару. Підібрати крамницю, в який зберігається заданий товар в потрібній кількості.

24. Створити список, в якому зберігається інформація щодо абонентів АТС: ПІБ., місце проживання, номер телефону. Необхідно написати програму, яка за прізвищем видає номер абонента.

25. Сформувати документ, в якому зберігається інформація щодо захворювань співробітників: ПІБ., рік народження, захворювання, тривалість хвороби. На його основі сформувати список співробітників, що перенесли одне і теж захворювання.

26. Створити список, в якому зберігається інформація щодо абонентів бібліотеки: ПІБ, кафедра, кількість книг, узятих абонентом. Необхідно написати програму визначення кафедри, яка заборгувала максимальну кількість книг.

27. Сформувати список, в якому зберігаються результати сесії групи. Написати програму нарахування стипендії за результатами сесії.

28. У звіті зберігається інформація щодо винахідницької діяльності кафедр за три роки: назва кафедр, кількість заявок, кількість позитивних рішень. Написати програму визначення кафедри, що отримала максимальну кількість позитивних рішень.

29. Написати програму визначення місяця, в якому народилася максимальна кількість студентів у вашій групі.

3.4 Контрольні запитання і завдання

1. Назвіть основні відокремлювальні характеристики типу даних «структура».

2. Які типи полів може містити структура?

3. Назвіть засоби звернення до елементів структури.

4. Назвіть засоби описання змінних структурного типу.

5. Чи можна присвоювати змінної структурного типу структуру?