
- •6.050103 «Програмна інженерія»
- •Одновимірні масиви
- •Теоретичні відомостi
- •Поняття масиву
- •Оголошення масиву
- •Доступ до елементів масиву
- •Обробка масивів
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Багатовимірні масиви
- •Теоретичні відомостi
- •Обробка матриць
- •Масиви-параметри
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття рядка
- •Операції з рядками
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття структури
- •Оголошення структури
- •Доступ до полів структур
- •Обробка структур
- •Приклад програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклад програми
- •Варіанти завдань
- •Бінарні файли
- •Теоретичні відомостi
- •Потоки і файли
- •Приклади програм
- •Варіанти завдань
- •Текстові файли
- •Теоретичні відомостi
- •Приклади програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклади програм
- •Варіанти завдань
- •8.1 Теоретичні відомостi
- •8.2 Приклади програм
- •8.3. Варіанти завдань
- •Порядок виконання роботи та зміст звіту
- •Список рекомендованої літератури
- •1.1. Одновимірні масиви ............................................................................... 3
Контрольні питання
Дати означення масиву та типу масиву.
Якими є головні властивості масивів даних?
Як здійснюється доступ до елементів одновимірного масиву?
Чи може список ініціалізації масиву містити більше (менше) значень, ніж вказано в оголошенні масиву?
Які базові операції обробки одновимірних масивів?
Де застосовується операція переставлення елементів масиву?
Багатовимірні масиви
Мета роботи - вивчити особливості організації роботи з багатовимірними масивами, зокрема, матрицями.
Теоретичні відомостi
Обробка матриць
У загальному випадку масив може містити компоненти будь-якого типу, зокрема, також масиви. Формат оголошення такого масиву у С++:
тип ім'я[кількість_1][кількість_2].
Такий масив можна трактувати подвійно: як масив, що складається з декількох масивів, або як один двовимірний масив (матрицю).
Наприклад,
int a[2][3]; - a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
Матриці, як і масиви можна визначати. Наприклад,
int d[2][3] = {{3,5,7},{4,3,1}}.
Особливості визначення:
кількість рядків матриці при оголошенні може бути опущена (визначається кількістю елементів в списку початкових значень), наприклад,
int m[][2]={3,5,7,1};
якщо початкових значень менше, ніж елементів у матриці, всі інші елементи автоматично ініціалізуються 0, наприклад,
int m[3][2]={3,5,7} 3 5
7 0
0 0
int m[2][3]={{3},{5,7}} 3 0 0
5 7 0
Доступ до окремого елемента матриці, зазвичай, здійснюється за наступним форматом:
ім'я_матриці[індекс_1][індекс_2].
Наприклад, А[5][19].
У С++ доступ до елементів матриці може також здійснюватися за покажчиком. Наприклад,
int m[3][2];
int *p;
p = &m[0][0];
p++; //перехід до наступного елемента.
Як індекси при звертанні до елементів матриць можуть використовуватися константи і довільні вирази, що включають змінні порядкових типів.
В оперативній пам’яті матриця зберігається як безперервна послідовність елементів. При цьому компонента з найменшим значенням індексу розміщується за найменшою адресою (самий правий індекс елементів багатовимірних масивів зростає найпершим). Наприклад, елементи масиву
int A[5][4];
в оперативній пам’яті будуть розміщені у такий спосіб:
A[0][0],...,A[0][3],A[1][0],...,A[1][3],...,A[4][0],...,A[4][3].
Обробка елементів матриць виконується у вкладених циклах for.
Масиви-параметри
Масиви (як одновимірні, так і багатовимірні) можуть бути параметрами підпрограм.
У С++ передача масиву у функцію здійснюється тільки за адресою. Можливі формати оголошення масивів-параметрів:
тип *ім'я_покажчика;
тип ім'я_масива[];
тип ім’я[][кількість].
Розмір одновимірного масиву-параметру вказувати не обов’язково. При передачі у функцію багатовимірного масиву розмірності усіх індексів, окрім першого, треба вказувати обов’язково.
Особливості передачі масивів-параметрів:
Для параметра-масива, що може мати різну розмірність, треба передавати два параметри - покажчик на масив (ім’я масиву) і кількість його елементів, наприклад,
const int n=9,m=7;
int mas1[n],mas2[m];
float f_3(int arr[],int r)
{ ...
}
main()
{ cout << f_3(mas1,n) <<" "<< f_3(mas2,m);
}
Для заборони модифікації значень параметра-масива використо-вується специфікація const, наприклад,
int mas[9];
float f_4(const int arr[])
{ ...
}
main()
{ cout << f_4(mas);
}
Окремі елементи масиву передаються у функцію за значенням.