Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab5.doc
Скачиваний:
4
Добавлен:
21.09.2019
Размер:
141.82 Кб
Скачать

Об’єднання

Об’єднання – це об’єкт, який дозволяє декільком змінним різних типів займати одну ділянку пам’яті. Кожному полю у об’єднанні виділяється одна і та ж ділянка пам’яті, рівна розміру цього поля. Таким чином обсяг пам’яті, необхідний для збереження об’єднання, рівний обсягу пам’яті, необхідному для зберігання найбільшого з полів об’єднання. Оголошення об’єднання подібне до оголошення структури:

union ім’я_об’єднання {

тип_поля ім’я1;

...

тип_поля ім’яN; };

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

union union_type {

int i;

char ch;

};

union union_type cnvt;

В cnvt як ціле число і, так і символ ch займають одну ділянку пам’яті. Коли оголошено об’єднання, компілятор автоматично створює змінну достатнього розміру для зберігання змінної найбільшого розміру з об’єднання. Для доступу до полів об’єднання використовується той самий синтаксис що і для доступу до структур – за допомогою операторів “крапка” і “стрілка”.

Використання об’єднань допомагає створити машинно-незалежний (переносний) код. Оскільки компілятор відслідковує розміри змінних, які утворюють об’єднання, зменшується залежність від комп’ютера.

Typedef

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

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

typedef struct { double re, im } COMPLEX;

typedef int *PINT;

Після таких оголошень синонім імені може використовуватися як специфікатор типу:

COMPLEX ca,*pca;//змінна типу COMPLEX і вказівник на COMPLEX

PINT pi; // вказівник на int

Необхідно пам’ятати, що насправді не створюються ніякі нові типи даних за допомогою typedef, а визначається нове ім’я для вже існуючого типу.

Наведений вище опис структур і об'єднань в основному відповідає їх побудові в мові С.

У С++ структури й об'єднання є окремими випадками об'єктних типів даних. Додаткові відомості про це будуть наведені при розгляді об'єктно-орієнтованих засобів С++.

Завдання

Розв’язати 2 задачі (1-а по темі «Функції», а 2-а по темі «Структури, об’єднання та типи означені програмістом»)

Функції

  1. Написати варіанти функції знаходження найменшого спільного кратного (НСК) з передачею обчислених значень через параметри-вказівники і через зовнішні змінні. Функція за цілими значеннями a, b обчислює їхнє найменше спільне кратне НСК(ab) та числа c і d такі, що ac=bd=НСК(a, b).

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

  3. Написати варіанти функції з передачею обчислених значень через параметри–вказівники і через зовнішні змінні, коли функція за цілим n>7 розраховує цілі a, b такі що 5a+3b=n, a+b є мінімальним.

  4. Дано натуральне число n. Нехай n!! означає 1*3*5*…n для непарного n, і 2*4*6*…n — для парного n. Написати варіанти функції, що обчислює n!! та (-1)n+1 n!!, з передачею обчислених значень через параметри-вказівники і через зовнішні змінні.

  5. Написати варіанти функції, що обчислює для заданого натурального числа n значення n!+n та 2n!, з передачею обчислених значень через параметри-вказівники і через зовнішні змінні.

  6. Для заданого натурального числа n обчислити суму послідовності чисел 20, 21, 22, …, 2n-1, використовуючи варіанти функції з передачею обчислених значень через параметри-вказівники і через зовнішні змінні.

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

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

  9. Написати функцію, яка повертає кількість повних років, місяців, днів, годин, хвилин та секунд для заданого у секундах проміжку часу.

  10. Написати функцію, що для заданого натурального числа n повертає три значення: кількість чисел у послідовності 1, 2,…, n, кратних 2, 3 та 5.

  11. Дано дійсні числа c1, d1, c2, d2, що задають дійсні і уявні частини комплексних чисел c1+id1, c2+id2. Написати функцію, що знаходить добуток цих двох комплексних чисел і повертає значення модуля отриманого комплексного числа, його фазу передає через зовнішню змінну, а його дійсну і уявну частину — через параметри-вказівники.

  12. Дано дійсні числа c1, d1, c2, d2, що задають дійсні і уявні частини комплексних чисел c1+id1, c2+id2. Написати функцію, що знаходить суму цих двох комплексних чисел і повертає значення модуля отриманого комплексного числа, його уявну частину передає через зовнішню змінну, а його дійсну частину і фазу — через параметри-вказівники.

  13. Дано дійсні числа c1, d1, c2, d2, що задають дійсні і уявні частини комплексних чисел c1+id1, c2+id2. Написати функцію, що знаходить відношення цих двох комплексних чисел і повертає значення модуля отриманого комплексного числа, його дійсну частину передає через зовнішню змінну, а його уявну частину і фазу — через параметри-вказівники.

  14. Дано дійсні числа c1, d1, c2, d2, що задають дійсні і уявні частини комплексних чисел c1+id1, c2+id2. Написати функцію, що знаходить різницю цих двох комплексних чисел і повертає значення модуля отриманого комплексного числа, його дійсну і уявну частину передає через зовнішні змінні, а його фазу — через параметр-вказівник.

  15. Дано вісім чисел x1, y1, x2, y2,…, x4, y4, що задають координати вершин чотирикутника. Написати функцію, що повертає його периметр і площу через зовнішні змінні.

  16. Дано вісім чисел x1, y1, x2, y2,…, x4, y4, що задають координати вершин чотирикутника. Написати функцію, що повертає довжини його діагоналей через параметри-вказівники.

  17. Дано шість чисел x1, y1, x2, y2,…, x3, y3, що задають координати вершин трикутника. Написати функцію, що повертає довжини його медіан через параметри-вказівники.

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

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

  20. Дано три числа w, l, h, що задають сторони прямокутного паралелепіпеда. Написати функцію, що повертає значення його об’єму та площу його бокової поверхні через зовнішні змінні.

  21. Дано два число r, що задає радіус кулі. Написати функцію, що повертає значення її об’єму та площі через параметр-вказівник і зовнішню змінну.

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

  23. Написати функцію, що переводить значення полярних координат, заданих через зовнішні змінні, у декартові.

  24. Написати варіанти функції, що переводить значення кута в радіанах, заданого через параметр-вказівник і через зовнішню змінну, у значення кута в градусах.

  25. Написати функцію, що для прямокутного трикутника із заданою довжиною гіпотенузи та прилеглого катета знаходить значення кута у форматі g° m' s'' з передачею чисел g, m, s через параметри-вказівники.

  26. Написати функцію, що для прямокутного трикутника із заданими довжинами катетів, знаходить значення кута у форматі g° m' s'' з передачею чисел g, m, s через зовнішні змінні.

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

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

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

  30. Написати функцію, що для дійсного числа х обчислює та .

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]