Багатовимірні статичні масиви
У сі, поряд з одновимірними, існують і багатовимірні масиви. Наприклад, двовимірний масив: його можна представляти як масив масивів, або як матрицю. Розмірність масиву може бути і більше: тривимірні, чотиривимірні і т.д.
Синтаксис залишається колишнім, додається тільки нова розмірність
Наприклад, двовимірний масив
Доступ до елементів масиву здійснюється також, як і в одновимірному масиві
Особливістю є те, що за своєю будовою багатовимірний масив є звичайним, "одновимірним", масивом. Всі елементи розташовані один за одним. Доступ до елемента a [i] [j] - по суті зрушення на i * число стовпців + j. У двовимірному масиві, таким чином, елементи розташовані "по рядах", в тривимірному - "по верствам", всередині яких елементи розташовані "по рядах" і т.д.
У зв'язку з цим, при початковій ініціалізації опускати розмірність можна тільки в перших квадратних дужках:
Компілятор буде знати в такому випадку зрушення, необхідний для доступу до елементу.
З цим пов'язані і особливості початкової ініціалізації. Так як багатовимірний масив по суті одновимірний, то його початкову ініціалізацію можна провести так
Можна опустити першу розмірність
Можна за допомогою фігурних дужок зробити дані більш зручними для читання
Також, як і в одновимірних масивах, якщо заявлено даних більше, ніж вказано при ініціалізації, то залишилися заповнюються нулями. Наприклад, одинична матриця 3 на 3
З того, що багатовимірний масив є одновимірним за структурою, випливають деякі цікаві властивості. Наприклад, доступ до елемента може бути здійснений через його порядковий номер
a [i] [j] === a [0] [i * число стовпців + j] і т.д.
1. Відсортуємо двовимірний масив методом бульбашки. Для сортування зазвичай використовується два підходи - перетворення двовимірного масиву в одновимірний, сортування, назад перетворення одновимірного в двовимірний, або заплутане звернення до елементів через індекс. Можна зробити все простіше: працювати з багатовимірним масивом як з одновимірним
Зауваження: за стандартом явно така поведінка не визначено, але побічно має підтримуватися.
2. Дано координати x і y точки, отримані в ході фотозйомки. Відомо, скільки кадрів в секунду робила камера. Обчислити швидкість в кожен момент часу і середню швидкість за весь час.
3. Масив використовується як карта, де число 2 означає початок, а 3 - кінець шляху. Програма спочатку знаходить координати цих точок, після цього обчислює відстань Манхеттена (скільки потрібно пройти по x і y від початку до кінця) і відстань по Евклиду (як гіпотенузу прямокутного трикутника).
4. Користувач вводить 10 слів. Вивести слово з максимальною довжиною. Програма зовні абсолютно проста, єдина проблема - зчитування і висновок слова. Так як слова зберігаються в двовимірному масиві, то покажчик на words [i] [0] - це початок нового слова. Також не забуваємо про обмеження на довжину при введенні.
ru-Cyrl 18- tutorial Sypachev S.S. 1989-04-14 [email protected] Stepan Sypachev students
Все ще не зрозуміло? - пиши питання на ящик