- •1. Кроки для створення виконання програми
- •2. Змінні та константи
- •3. Символьні масиви і рядки
- •4. Директиви препроцесора
- •Тема 2: введення-виведення даних план
- •Аргументи для setiosflags і resetiosflags
- •2. Функція printf
- •2. Операції відношення
- •3. Логічні операції
- •4. Додаткові операції
- •5. Порозрядні операції
- •Тема 4: організація циклів план
- •1. Організація циклів за допомогою while і do...While
- •2. Організація циклів із використанням оператора for
- •3. Оператори switch і goto
- •Тема 5: створення функцій план
- •1. Створення функцій
- •2. Видимість змінних
- •3. Передача значень
- •4. Повертаємі значення і прототипи функцій
- •Тема 6: зовнішні пристрої і символьне введення/виведення план
- •1. Загальна концепція
- •2. Функції символьного введення-виведення
- •3. Символьні функції
- •4. Рядкові функції
- •5. Числові функції
- •6. Функції роботи з датою та часом
- •Тема 7: масиви план
- •1. Одномірні масиви, їхня ініціалізація
- •2. Сортування масивів
- •3. Розміщення одномірного масиву в пам’яті
- •4. Багатомірні масиви і їхнє розміщення в пам’яті
- •Тема 8. Вказівки і посилання план
- •1. Вказівки
- •2. Масиви і вказівки
- •Тема 9: робота з файлами план
- •1. Загальна характеристика роботи з файлами
- •2. Послідовні файли
- •Можливі режими доступу
- •3. Файли довільного доступу (із випадковим доступом)
- •Тема 10. Структури план
- •1. Загальна характеристика структури
- •2. Масиви структур
- •3. Використання масивів, як елементів структур
- •2. Робота зі структурами є універсальною, передбачено додавання записів до файлу (флаг ios:app). Для підрахунку кількості структур на диску приведемо наступні рядки програми:
- •Список літератури
Тема 10. Структури план
Загальна характеристика структури.
Масиви структур.
Використання масивів, як елементів структур.
1. Загальна характеристика структури
Структури дають можливість групувати дані і працювати з цими даними як із єдиним цілим.
Структура являє собою множину, що складається з декількох значень, кожна з який може мати свій тип даних. Елементи структур можуть мати різні типи даних.
Для визначення структури використовується синтаксис:
struct [тег структури]
{
в
}
поля структури
визначення члена структури;
} [одна або декілька змінних-структур];
тег-ім’я структури.
Приклад структури з інформацією про компакт-диски:
struct cd_info
{
char title [25]; //назва
char artist [28]; //виконавець
int num_song; //число пісень
float price; //вартість
char date_bought [8]; //дата покупки
} cd1, cd2, cd3;
Тут описані три структурні змінні: cd1, cd2, cd3;
Існує два засоби ініціалізації структур:
при оголошенні;
окремо в тілі програми.
Приклад 1. Ініціалізація при оголошенні
struct cd_info
{
char title[25];
char artist[28];
int num_song;
float price;
char date_bought[8];
} cd1=
{
“Red Moon Men”,
“Пугачова”, 12, 20.55,
“02/13/98”
};
Приклад 2. Присвоювання в тілі програми.
#include <iostream.h>
#include <string.h>
void main()
{
struct cd_info
{
char title [25];
char artist [28];
int num_song;
float price;
char date_bought [8];
} cd1;
strcpy(cd1.title, “Red Moon Men”);
cd1.num_song = 12;
cd1.price = 11.95;
strcpy(cd1.artist, “Пугачова”);
cout << “Title: “ << cd1.title << “\n”;
cout << “Artist: “ << cd1.artist << “\n”;
cout << “Number of songs: “ << cd1.num_song
<< “\n”;
cout << “Price: “ << cd1.price << “\n”;
}
Як очевидно з прикладу до полів структури можна звертатися, вказуючи ім’я змінної-структури, ім’я поля і розділяючи ці імена точкою.
У загальному вигляді:
struct bb
{
int field_1;
char field_2;
} c, a;
int value1 = c. field_1;
char value2 = a. field_2;
Якщо змінна ptr визначена як вказівка на структуру, то для доступу до полів структури можна використовувати операцію ->.
Наприклад:
bb *ptr;
int value1 = ptr->field_1;
char value2 = ptr->field_2;
Оператор ptr->field_1 еквівалентний виразу (*ptr).field_1.
Приклад:
#define COMPLEX struct complex_type
COMPLEX
{
float real;
float image;
};
Операція додавання С1 і С2 для одержання С3.
#define COMPLEX struct complex_type
COMPLEX
{
float real;
float image;
};
COMPLEX C1, C2, C3;
C3. real = C1. real + C2. real;
C3. image = C1. image + C2. image;
або
COMPLEX* C1, C2, C3;
C3->real = C1->real + C2->real;
C3->image = C1->image + C2->image;
Структури можуть бути вкладеними, тобто одним із полів структури може бути інша структура.
Приклад:
#include <iostream.h>
struct address_info
{
char addr[25]; //Інформація про адресу
char state[20];
};
struct add
{
char name[25];
address_info *address;
double zarp;
};
void main()
{
add t;
cin >> t.zarp;
cin >>t.name;
cin >>t.address->state;
cin >>t.address->addr;
}
Вкладена структура має вигляд:
Резюме:
Структури дозволяють групувати дані більш гнучкою образом, ніж масиви. Вони можуть містити елементи різноманітних типів даних. Ініціалізувати структури можна двома засобами: під час оголошення, або за допомогою операторів «точка»(.) або "->" у тілі програми. Структури аналогічні записам бази даних, а їхні елементи - полям записів.