метри прямокутника: n ); ( Координати лівого верхнього кута% d% d n raquo ;, Rect.LUPoint.x, Rect.LUPoint.y); ( Координати лівого верхнього кута% d% d n raquo ;, Rect.RDPoint.x, Rect.RDPoint.y);
printf ( Цветграніци:% s n raquo ;, Rect.BorderColor);
В якості поля структури також можна використовувати покажчики на будь структури, у тому числі на структури того ж типу:
structPointList
{, y; * LastPoint;
};
Структури, які мають у своєму складі поля-покажчики на таку ж структуру, використовуються для створення складних структур даних - списків, дерев.
. 6 Використання синоніма типу
Ключове слово typedefпозволяет в програмі створити синонім типу, який може використовуватися для оголошення змінних, параметрів функцій. Синонім можна створити для будь-якого існуючого типу (int, floatі т. Д.), У тому числі для користувальницького типу - структури або масиву.
Приклад 1. Створення синоніма структури:
{, y;
} POINT;
Ідентифікатор POINT являє собою синонім типу point. За допомогою синоніма POINT можна оголосити змінну: POINTpt1;
або передати змінну в функцію:
voidShowRect (POINT pt1, POINT pt2);
Приклад 2. Створення синоніма масиву:
[4] [5];
Ідентифікатор mas позначає тип - двовимірний масив, що складається з чотирьох рядків і п'яти стовпців. Цей ідентифікатор можна використовувати для оголошення змінної - масиву A:
;
або для передачі масиву в функцію:
voidFormMas (mas A, intm, int n);
1.7 Типові помилки при розробці структур
Найбільш часто зустрічається помилкою є включення в структуру взаємозалежних даних. Тобто таких членів, значення яких можуть бути обчислені на підставі інших членів структури.
Наприклад, неправильної структурою буде:
:
:
:
: structLine {, pt2; length;
};
В даному випадку член length може бути обчислений на підставі pt1 і pt2. Зберігання значення length в структурі порушує другу рекомендацію з використання структур. Крім витрати пам'яті для зберігання надлишкової інформації програміст отримує набагато більш складну проблему: необхідність синхронізації даних. При кожній зміні будь-якого з членів структури доведеться перераховувати значення length.
Більш витончені приклади помилок:
:
:
://Прямокутник на площині
struct Box2 {pt1, pt2, pt3, pt4;
};
:
:
:
:
://Окружність в тривимірному пространствеCircleIn3D {plane;// Площина, в якій лежить окружностьcenter ;;
};
Глава 2. Розробка додатків з використанням структур в С ++
Була розроблена єдина програма, яка включає в себе кілька операцій над різними структурами, які були створені нами ж. Вона має вигляд форми, на якій розташовані чотири панелі, кожна панель групує завдання, що відносяться до однієї і тієї ж структурі. Наприклад, на першій панелі розміщені поля для введення дати і вікно для виведення опису людини за датою народження.
Обчислюється це таким чином:
dt1.day=StrToInt (LabeledEdit1- gt; Text);
dt1.month=StrToInt (LabeledEdit2- gt; Text) ;. year=StrToInt (LabeledEdit3- gt; Text) ;. century=dt1.year/100 + 1; .decade=10 * ( dt1.year/10-10 * (dt1.century - 1)); ((dt1.month lt; 3) || (dt1.month == 12)) {.season= зима raquo ;;
} if (dt1.month lt; 6) {.season= весна raquo ;;
} if (dt1.month lt; 6) {.season= літо raquo ;;
} dt1.season= осінь raquo ;; - gt; Lines- gt; Add ( Етотчеловекроділсяв + IntToStr (dt1.decade) +
- роках + IntToStr (dt1.century) + -століття. Пора року - + dt1.season);
На другій панелі можна побачити поля для введення сторін трикутника, поле для виведення відповіді і три кнопки для кожного обчислення окремо.
(обчислення площі, типу і кута тр...