
Програмування Лабораторна робота № 2_6
Лабораторна робота № 2.6 "Робота з двовимірними масивами. Функції і масиви"
Мета: Отримання навиків обробки двовимірних масивів. Організувати обробку масивів з використанням функцій, навчитися передавати масиви як параметри функцій.
Короткі теоретичні відомості
1.1. Визначення масиву
Загальний вигляд конструкції опису багатовимірного (N-вимірного) масиву такий:
де р1 р2, ..., Pn задають розміри для кожного виміру.
Елементи масивів розташовуються в ОП таким чином, що швидше змінюються самі праві індекси, тобто елементи одновимірного масиву розташовуються підряд, двовимірного - по рядках, тривимірного - по матрицях, а матриці - по рядках.
Для звертання до елементів багатомірного масиву можна використовувати нуль і більш індексів (індексних виразів):
ім'я-масиву [вираз1][вираз2] ...
Наприклад, для звертання:
• до одновимірного масиву можна використовувати одно-індексний вираз (індекс);
• до двовимірного - 1 або 2 індексний вираз;
• до тривимірного - 1, 2 або 3 індексний вираз і т.д.
При звертанні до багатомірних масивів одержання значення елемента масиву можливо тільки після визначення адреси елемента масиву, тобто при повній кількості індексів. При цьому обчислюються індексні вираз зліва на право, і доступу до значення виконується після обчислення останнього індексного виразу.
Приклад оголошення двовимірного масиву значень типу int:
int а[m][n] ;
Цей масив складається з m одновимірних масивів (рядків), у кожному з яких утримується n елементів (стовпців). При роботі з цим двовимірним масивом можна використовувати одно або 2 індексний вираз. Наприклад:
а[i][j]- містить 2 індекси; використовується для звертання до елемента i-рядка, j-стовпця масиву; обчислюються індексні вирази, визначається адреса елемента масиву і вилучається його значення;
a[i] - містить 1 індекс; визначає адресу одновимірного масиву: адреса початку i-рядка масиву;
а - не містить індексу і визначає адресу масиву, його нульового елемента.
1.2. Ініціалізація масиву
Під час оголошення двовимірні масиви можна частково або повністю ініціалізувати.
Приклад 2. Оголосимо і проініціалізуємо двовимірний масив цілих чисел
int ball[2][3] = {4, 5, З, З, 5, 2}. У такому випадку елементам надаються значення так:
Двовимірні масиви автоматично ініціалізуються "по рядках", тобто спочатку модифікується зовнішній (правіший) індекс . Надавати значення елементам масиву можна і так:
1.3. Покажчики і масиви
Ім'я масиву без індексу є покажчиком-константою, тобто адресою першого елемента масиву (а[0]).
а
|
|
|
|
|
|
|
|
*a = = а[0];
*(a+1) = = а[1];
. . . . . . . . .
*(a+i) = =a[i];
Відповідно до синтаксису в Сі існують тільки одновимірні масиви, але їх елементами, у свою чергу, теж можуть бути масиви.
int а[5][5];
Для двовимірного масиву:
а[m][n]= = *(а[m]+n) = = *(*(a+m)+n);
До елементів двовимірного масиву можна звернутися і за допомогою скалярного покажчика на масив. Наприклад, після оголошення:
int а[m][n], *р = а;
*(p+i*n+j) - значення j - елемента i-рядка ;
де: n - кількість елементів у рядку;
i*n + j - змішання а[i][j]- елемента відносно початку масиву а.