
- •1 Основні елементи мови с
- •1.1 Алфавіт мови програмування
- •1.2 Лексеми
- •1.3 Ключові слова
- •1.4 Ідентифікатори
- •1.5 Класифікація типів даних
- •1.6 Літерали
- •1.7 Оператори
- •1.8 Коментарі
- •1.9 Директиви препроцесора
- •1.10 Організація програми
- •2 Операції та вирази
- •2.1 Загальні відомості
- •2.2 Арифметичні операції
- •2.3 Операції приведення типів
- •2.4 Операції присвоєння
- •2.5 Операції інкремента і декремента
- •2.6 Операції порівняння
- •2.7 Операції зсуву
- •2.8 Порозрядні операції
- •2.9 Логічні операції
- •2.10 Операція sizeof
- •2.11 Операція послідовного обчислення
- •2.12 Операція умови (?:)
- •2.13 Адресні операції
- •3 Прості типи даних
- •3.1 Оголошення змінних
- •3.2 Час існування та область видимості змінних
- •3.3 Цілі типи даних
- •3.4 Дійсні типи даних
- •4 Оператори керування
- •4.1 Оператор розгалуження if
- •4.2 Оператор розгалуження if-else
- •4.3 Оператор множинного розгалуження switch
- •4.4 Оператор циклу for
- •4.5 Оператор циклу while
- •4.6 Оператор циклу do while
- •4.7 Оператор break
- •4.8 Оператор continue
- •5 Функції
- •5.1 Основні поняття
- •5.2 Види виклику функцій
- •5.3 Область видимості
- •5.4 Порожній тип void
- •5.5 Передача аргументів у функцію
- •5.6 Рекурсивні функції
- •5.7 Прототипи функцій
- •6 Покажчики
- •6.1 Визначення та ініціалізація покажчиків
- •6.2 Визначення покажчиків
- •6.3 Масиви
- •6.4 Операції порівняння
- •6.5 Копіювання рядка
- •6.6 Покажчики на функцію
- •6.7 Покажчики на void
- •6.8 Арифметика покажчиків
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •7.3 Багатовимірні масиви
- •8 Рядки в с
- •8.1 Рядки
- •8.2.Створення рядків
- •8.3 Прототипи
- •8.3 Функції перетворення буферів
- •8.4 Функції перевірки літер
- •8.5 Операції з рядками
- •9 Структури, об’єднання, перерахування
- •9.1 Структури
- •9.2 Бітові поля
- •9.3 Ключове слово typedef
- •9.4 Об’єднання
- •9.5 Перераховуваний тип
- •10 Введення та виведення даних
- •10.1 Функція виведення printf
- •10.2Функція введення scanf
- •10.3 Введення та виведення у файл
- •11 Динамічне виділення пам'яті
7.3 Багатовимірні масиви
Дво-, тривимірні та інші масиви з більшою кількістю вимірів називаються багатовимірними масивами. Індексом є уже сукупність чисел, кількість яких визначає скільки саме вимірів матиме масив. Оголошуються вони аналогічно до одновимірних. Двовимірний масив можна уявити як таблицю n×m.
Синтаксис двовимірного масиву має такий вигляд:
<тип даних> <ідентифікатор> [n][m];
Для двовимірних масивів уже вводиться поняття матриці, її головної та побічної діагоналі.
Запам’ятайте, що у двовимірних масивах перший індекс завжди вказує на номер рядка, а другий – на номер стовпчика у цьому рядку.
Індексація двовимірного масиву зображена на рисунку 7.2.
Рисунок 7.2 – Зображення двовимірного масиву
Приклад 7.6. Ініціалізація масиву
int a[2][3]; /* представлено у вигляді матриці
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2] */
int w[3][3] = { { 2, 3, 4 },
{ 3, 4, 8 },
{ 1, 0, 9 } };
/* об’явлено масив w[3][3ї, списки,
вилідені в фігурні дужки, відпові-
дають рядкам массиву, у випадку
відсутності дужок ініціалізація
буде виконана неправильно */
Усі властивості одновимірних масивів зберігаються і для багатовимірних масивів. Тривимірний масив уже можна уявити як об’ємну фігуру – паралелепіпед. Більше трьох вимірів можна вважати математичною абстракцією.
Найчастіші дії, що проводяться над масивами – це:
пошук деякого значення;
сортування елементів в порядку зростання або спадання;
підрахунок кількості елементів у масиві, що задовольняють дану умову.
Приклад 7.7. Всім елементам, що знаходяться вище головної діагоналі присвоїти значення ‘1’, елементам, що знаходяться нижче головної діагоналі – ‘-1’, а тим що на самій діагоналі – ‘0’.
#include <stdio.h>
#include <stdlib.h>
int main(){
int MAS[4][4];
int n=5;
for (int i=0;i<n;i++){
for (int j=0; j<n; j++){
if (i==j) MAS[i][j]=0;
if (i>j) MAS[i][j]=-1;
if (i<j) MAS[i][j]=1;
printf("%3i ", MAS[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
Результат роботи програми:
Контрольні запитання
Що таке масив?
Які переваги використання масивів?
Що таке одновимірний масив?
Опишіть прототип одновимірного масиву.
Як найпростіше заповнити масив?
Наведіть кілька прикладів заповнення масиву.
Що таке багатовимірні масиви?
Опишіть прототип двовимірного масиву.
Що таке головна та побічна діагоналі?
Напишіть програму, яка зчитуватиме з клавіатури масив цілих чисел 5х5 та виводитиме на екран суму всіх його елементів.
Напишіть програму, яка зчитуватиме з клавіатури масив цілих чисел 5х5 та виводитиме на екран суму всіх додатних чисел.
Напишіть програму, яка зчитуватиме з клавіатури масив цілих чисел 5х5 та виводитиме на екран максимальне та мінімальне значення.
Напишіть програму, яка зчитуватиме з клавіатури масив цілих чисел 5х5 та виводитиме на екран суму всіх чисел що знаходяться на головній та побічній діагоналях.
Напишіть програму, яка зчитуватиме з клавіатури масив цілих чисел 5х5 та виводитиме на екран таблицю подвоєних значень масиву.