Вступ до двовимірних масивів на C

Масив - це група елементів з однаковим (однорідним) типом даних. Він також називається похідним типом даних. Якщо ми розглядаємо примітивний тип даних і присвоюємо значення, як показано нижче,

А тепер, якщо ми хочемо зберегти нове значення в змінну a, нове значення замінить старе значення. Використовуючи одну примітивну змінну, ми можемо зберігати лише одне значення за один раз, ми не можемо зберігати кілька значень.

Для зберігання більш ніж одного елемента в одній змінній, наприклад, студентські знаки, ідентифікатори службовців, мобільні номери з великою кількістю даних, ми повинні створити 100 унікальних змінних, що є дуже складним завданням. Тож саме тому було введено поняття масивів.

Поняття в двовимірних масивах на C

Ми можемо визначити масиви в

  • Одновимірний
  • Двомірний

І так далі, до N-розмірних залежно від вимоги. Але тут ми будемо мати справу з 2-D масивами. Як випливає з назви, 2-D масиви можуть представляти собою матричне представлення даних, які створені для реалізації структури реляційних баз даних, що нагадують схожість, і можуть зберігатися в табличних формах. Це забезпечує простоту зберігання об'ємних даних, які можуть бути передані будь-якій кількості функцій на основі вимоги. Дані в цих масивах можна отримати через ідентифікатори рядків та стовпців.

Як ми можемо їх визначити та реалізувати? Де ми можемо їх використовувати? Подальше, давайте розберемося в цих поняттях.

В C розмірні масиви можна оголосити так:

Синтаксис

Таким чином, ми можемо оголосити 2-D масив як:

Значення наведеного подання можна зрозуміти як:

  1. Пам'ять, виділена змінній b, є типом даних int.
  2. Дані представлені у вигляді 2 рядків та 3 стовпців.


До даних всередині масиву можна отримати доступ через вищезазначене представлення. У поданні двовимірних масивів перший квадратний дужка представляє кількість рядків, а другий - кількість стовпців. Індексне представлення масиву для першого елемента завжди починається з нуля і закінчується розміром-1. Змінна масиву (тут b) завжди містить базову адресу блоку пам'яті і називається внутрішньою змінною вказівника.

Так, наприклад, якщо кількість рядків дорівнює 3, то представлення індексу для доступу до даних у рядках буде 0, 1 і 2. Така ж логіка застосовується і до індексів стовпців. Для наведеного подання, щоб отримати дані 2- го ряду 3- го стовпця, ми можемо отримати доступ за допомогою b (1) (2).

Ініціалізація масивів

У нас є два різні методи ініціалізації значень у C. Методи відрізняються лише синтаксично.

Нижче - один із них.

Ще один спосіб ініціалізації:

Як правило, перший спосіб ініціалізації є кращим, оскільки ми можемо чітко зрозуміти та візуалізувати рядки та стовпці 2-D масивів у C.

Нижче наводиться приклад для зображувального зображення елементів та їх адреси для масиву b.

Елементи масиву зазвичай зберігаються в послідовних місцях пам'яті на основі типу даних елементів.

Вставка елементів у 2-D масиви

Для вставки елементів у 2-D масиви нам потрібно вставити дані як у рядках, так і у стовпцях. Отже, для цього ми використовуємо поняття петель. У описаному вище процесі ініціалізації даних у масиві ми заздалегідь визначили значення.

Тут елементи можуть бути динамічно вставлені користувачем відповідно до вимог. Нижче наведено приклад коду для вставки елементів.

#include
int main()
(
int b(2)(3);
int i, j, num;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
)

Як зазначено в коді:

  1. По-перше, ми оголошуємо змінну масиву та розміри масиву числом рядків та стовпців.
  2. Потім ми оголошуємо дві змінні для ітерації елементів у масиві.
  3. Потім для петель використовують. Зовнішня для циклу призначена для ітерації рядків, а внутрішня - для стовпців.
  4. Функція Scanf використовується для зчитування даних під час введення даних, а потім розміщує значення, вставлене в цих положеннях i і j.

У наведеному вище прикладі ми вставили дані в матрицю, що має 2 ряди та 3 стовпці. Вихід з наступного можна отримати, як показано нижче:

Оскільки ми не використовували функцію printf для відображення виводу, написана програма прочитала лише введені користувачем значення. Після написання функції друку (з використанням циклів) вихід буде відображатися як:

Оновлення елементів у двовимірних масивах

Оновлення елементів у масиві можна здійснити або за допомогою конкретного конкретного елемента, що підлягає заміні, або шляхом визначення позиції, в якій має бути здійснена заміна. Для оновлення зазвичай потрібні такі деталі.

  1. Елементи масиву
  2. Позиція / елемент, куди його потрібно вставити
  3. Значення, яке потрібно вставити.

Для оновлення даних у масиві за допомогою деталей елементів, спочатку нам потрібно знайти цей елемент у масиві, зрозуміти його позицію, а потім замінити старий елемент на новий.

Тут ми наведемо нижче два приклади оновлення елемента двовимірного масиву.

По-перше, переглянемо приклад, коли положення елементу, що підлягає оновленню, вже відоме.

#include
int main()
(
int b(2)(3);
int i, j, num;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
b(0)(2)=10;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
printf("\t%d", b(i)(j));
)
printf("\n");
)
return 0;
)

У вищевказаній програмі вибирається елемент в першому і третьому стовпцях і значення даних у цій позиції оновлено.

Вихід для вище:

У другому прикладі ми покажемо, як позицію елемента можна динамічно сприймати як введене користувачем значення та оновити значення елемента в цій конкретній позиції.

#include
int main()
(
int b(2)(3);
int i, j, num;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
printf("Enter the value of row and coulmn number :");
scanf("%d %d", &i, &j);
printf("Enter the number you want to update with: ");
scanf("%d", &num);
b(i)(j)=num;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
printf("\t%d", b(i)(j));
)
printf("\n");
)
return 0;
)

Тут ми використовували функцію scanf, щоб прочитати значення, задане користувачем відповідно до їх вибору для позиції елемента на основі номерів рядків та стовпців.

Вихід такий:

Як вправу ви можете спробувати написати програму для оновлення всього рядка матриці за допомогою введених користувачем значень?

Тепер, як ми знаємо, у двовимірному масиві ми оголошуємо розмір масиву на самому початку. Ми знаємо про розмір масиву, але що робити, якщо користувач введе випадковий номер рядка та стовпця поза нашим розміром масиву?

Зауважте, що як ми не писали жодних умов if / else чи try / catch, вихід матриці не змінюється. Однак ми можемо записати код, використовуючи вищезазначені умови для відображення помилок для таких випадків.

Видалення елементів у двовимірних масивах

Після концепцій вставки та оновлення даних всередині масиву давайте тепер подивимося, як ми можемо видалити цілий рядок із масиву.

Ми написали програму у простому форматі, щоб поняття різних операцій у двовимірному масиві можна було легко зрозуміти.

#include
int main()
(
int b(2)(3), i, j, num, x;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
printf("Enter the value of row number :");
scanf("%d", &x);
for(i=0;i<2;i++)
(
if(i==x)
(
for(j=0;j<3;j++)
(
if((i+1)<2)
(
printf("\t%d", b(i+1)(j));
)
)
i++;)
else
(
for(j=0;j<3;j++)
(
printf("\t%d", b(i)(j));
)
)
printf("\n");
)
)

Наступні кроки:

  1. Значення масиву приймає динамічно
  2. Попросив користувача ввести число (індекс) рядка, який потрібно видалити.
  3. Використовуючи для ітерації циклу, ми порівнюємо, чи номер рядка та номер введення користувача збігаються чи ні.
  4. Якщо вони збігаються і якщо номер рядка менше розміру масиву, ми друкуємо наступний рядок. Інше, ми друкуємо рядок таким, яким він є.

Вихід такий:

Що робити, якщо я даю номер рядка за межами межі масиву?

Він не знайде рядок для видалення та виходу з програми, надрукувавши весь масив.

Як уже відомо, ми навіть можемо динамічно оголошувати значення номерів рядків і стовпців і записувати програму відповідно.

Це не виглядає просто і легко вивчити?

Як вправу ви можете спробувати видалити певний елемент для 2-d масиву зараз?

Висновок

У цьому розділі ми дізналися основні операції над двовимірними масивами. Ці 2-d масиви корисні в режимі реального часу за допомогою матричних операцій та багатьох математичних обчислень.

Масиви можна використовувати навіть для показу календарів, місць розташування стоянки, і ми можемо навіть грати в шахи.

Багато інших структур даних, такі як "Зв'язані списки", "Черга", "Графіки", "Дерева", повинні використовувати цю концепцію двовимірних масивів як основну вимогу для зберігання та доступу до розташування різних елементів. Спробуйте вирішити основні операції 2d масивів і весело вивчайте C.

Рекомендовані статті

Це посібник щодо двовимірних масивів у C. Тут ми обговорюємо Вступ, Ініціалізація масивів, Вставлення, Оновлення, Видалення елементів у 2-D масивах. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Масиви в R
  2. Переваги масиву
  3. Масиви в C ++
  4. Масиви в JavaScript
  5. Приклади масивів у C #
  6. Масиви в PHP