
- •Лабораторна робота №5 Функції Структури, об’єднання та типи означені програмістом
- •Теоретичні відомості
- •Синтаксис функцій
- •Прототипи функцій
- •Локальні змінні в функціях
- •Inline (підставні) функції
- •Void-функції
- •Рекурсивні функції
- •Перевантаження функцій
- •Виклик функцій
- •Передача параметрів та повернення результату
- •Структури, об’єднання, бітові поля
- •Структури
- •Доступ до компонентів структур:
- •Присвоювання структур
- •Вказівники на структури
- •Масиви і структури в структурах
- •Бітові поля
- •Об’єднання
- •Завдання
- •Функції
- •Структури, об’єднання та типи означені програмістом
Структури, об’єднання та типи означені програмістом
Створити функцію, що знаходить кількість днів між двома датами, заданими у вигляді структури, яка містить рік, місяць та день місяця.
З клавіатури вводяться слова, деякі з них повторюються. Записати їх у масив структур, в якому слова не повторюються. Кожна структура — елемент масиву — містить інформацію про кількість повторів даного слова при вводі. Вивести отриманий масив.
Написати програму, що виводить окремо введені з клавіатури молодше і старше слово (дві змінних типу unsigned int) у вигляді беззнакового довгого цілого (змінна типу unsigned long). Використати той факт, що окремі поля в об’єднанні займають одну і ту ж ділянку пам’яті.
Написати програму, що вводить змінну типу unsigned char в десятковому вигляді і виводить її побітно (в двійковому представленні). Використати структуру з бітовими полями.
Задано два масиви однакової довжини — один з цілими числами, другий — з рядковими змінними. Створити структуру, що містить по одному елементу з кожного масиву і вказівники на попередню та наступну таку ж структуру.
Задано масив чисел. Визначити кількість повторів кожного з чисел. Результат записати у масив структур.
Написати програму, що виводить молодший і старший байт (дві змінні типу unsigned char) окремо введеного з клавіатури беззнакового цілого (змінна типу unsigned short). Використати той факт, що окремі поля в об’єднанні займають одну і ту ж ділянку пам’яті.
З клавіатури вводяться багаторозрядні числа. Зберегти їх у масиві структур, записуючи кожен розряд числа у окремому полі. Перевірити, чи є серед порозрядних сум одинакові.
Написати програму, перетворення однорозрядного вісімкового числа у двійкове. Використати структуру з бітовими полями.
Задано масив структур, що містять такі поля: прізвище, ім’я, рік народження, ріст, стать. Скласти програму, що виводить прізвища студентів, ріст яких менший 1,70.
Створити структуру, що містить дані про геометричні фігури: тип (коло, еліпс, квадрат, прямокутник, прямокутний трикутник), та специфічні поля — радіус для кола, довжини півосей еліпса, довжину сторони квадрата, та довжини сторін прямокутника, довжини катетів трикутника. Скласти програму, яка обчислює за даними із структури площі вказаних фігур.
Написати програму, що виводить окремо введені з клавіатури молодший і старший байт (дві змінних типу unsigned char) у вигляді беззнакового цілого (змінна типу unsigned short). Використати той факт, що окремі поля в об’єднанні займають одну і ту ж ділянку пам’яті.
Написати програму, що вводить побітно значення змінної типу char і виводить отриману змінну в десятковому представленні. Використати структуру з бітовими полями.
Написати програму, що переставляє у введеному з клавіатури цілому зі знаком (змінна типу int) молодший і старший байт (дві змінні типу char) і виводить результат на екран. Використати той факт, що окремі поля в об’єднанні займають одну і ту ж ділянку пам’яті.
Створити програму, що розпаковує дані про номер місяця, число місяця (парне або непарне), день тижня, які записані у змінній типу char у такому форматі: старших 4 біти містять номер місяця, наступний біт вказує на парність дати, 3 молодших біти — день тижня. Вивести розпаковані дані на екран.
Створити програму, що розпаковує дані про результати екзаменаційної сесії для одного студента, які записані у змінній типу char у такому форматі: на оцінку з кожного з 4-х екзаменів виділяється по два біти, що означають: 00-"незадовільно", 01-"задовільно", 10-"добре" і 11-"відмінно". Вивести розпаковані про результати сесії на екран.
Заархівувати рядкову змінну із символами латинського алфавіту, що містить багато послідовностей, в яких повторюється один і той же символ, за таким алгоритмом: якщо символ не повторюється, то він залишається без змін, якщо повторюється, то заміняється двома символами — перший задає кількість повторів в семи молодших бітах, а в старшому біті містить 1, другий – сам повторюваний символ.
Написати програму, що переставляє у введеному з клавіатури довгому цілому зі знаком (змінна типу long) молодше і старше слово (дві змінні типу int) і виводить результат на екран. Використати той факт, що окремі поля в об’єднанні займають одну і ту ж ділянку пам’яті.
Нехай зчитане з інтерфейсу чотирьохбайтове слово (int) містить параметри відеорежиму в такому форматі: кількість точок в рядку — 11 біт, кількість рядків — 11 біт, кількість розрядів пам’яті для представлення кольору однієї точки (bit per pixel) — 5 біт, номер відеорежиму — 5 біт. Вивести розпаковані дані на екран.
Створити програму, що упаковує введене з клавіатури значення часу в одну змінну типу short в такому форматі: година (у 12-годинному форматі) — 4 біти, хвилина — 6 біт, секунда — 6 біт.
Розархівувати рядкову змінну за таким принципом: молодші чотири біти задають десяткову цифру (0..9), чотири старші — кількість її повторів.
Створити функцію, що знаходить добуток двох комплексних чисел, заданих у вигляді структури, яка містить дійсну і уявну частину комплексного числа.
Написати програму, що виводить побайтно (змінні типу unsigned char) введене з клавіатури число з плаваючою комою (змінна типу float). Використати той факт, що окремі поля в об’єднанні займають одну і ту ж ділянку пам’яті.
Створити функцію, що знаходить різницю двох правильних дробів, заданих у вигляді структури, яка містить цілу частину, чисельник і знаменник дробу.
Створити програму, що із масиву структур, що містять прізвище студентів студента та результати його екзаменаційної сесії, формує масив структур, що містять середній бал за сесію та прізвища студентів, які його отримали. Видрукувати отримані результати у порядку спадання середнього балу.
Написати програму, перетворення п’ятирозрядного вісімкового числа у шістнадцяткове, використовуючи структуру з бітовими полями.
Створити програму, що упаковує введене з клавіатури значення дати в одну змінну типу short в такому форматі: рік (останні дві цифри) — 7 біт, місяць — 4 біти, день — 5 біт.
Створити програму, що із масиву структур, що містять назву групи, номери пар і номер відповідної аудиторії, формує матрицю завантаженості аудиторій — для кожної аудиторії і для кожної пари — назву групи, яка в цій аудиторії займається на даній парі.
Написати програму, що виводить молодше і старше слово (дві змінних типу unsigned int) введеного з клавіатури беззнакового довгого цілого (змінна типу unsigned long). Використати той факт, що окремі поля в об’єднанні займають одну і ту ж ділянку пам’яті.
Скласти програму, яка отримує список в якому вказано номери та тривалість звучання пісень, що записуються на касету, і переставляє пісні в такому порядку, щоб час звучання кожної із сторін касети був мінімальним. Вивести для кожної сторони час звучання та номери пісень, які на неї записуються.