Введение в многомерный массив в C

Эта статья посвящена многомерному массиву в c, который преимущественно используется в компьютерном и исследовательском анализе. Как правило, массив линейно фокусирует часть информации, которая называется одномерной. В одномерном хранилище данных хранится только одна информация, например, о студентах. В некоторых ситуациях необходимо хранить данные в табличном формате, который содержит строки и столбцы или обрабатывать сложные данные. Чтобы визуализировать его, нам нужен матричный формат, который мы назвали двумерными массивами, в которых для расположения требуются пиксели изображения, графика. Данные хранятся в табличной форме. Манипуляции с массивами выполняются путем перестановки элемента с использованием таких функций, как reshape, squeeze.

Как объявить многомерный массив в C?

Синтаксис:

Общее объявление многомерного массива имеет вид:

type name ( size) (size)……. N;

  • Здесь имя типа данных - обозначает тип элементов (целое число, число с плавающей запятой).
  • Имя массива - Обозначает имя, присвоенное размерному массиву.
  • Размер строки - количество элементов строки, например row-size = 8, тогда массив имеет 8 строк.
  • Размер столбца - количество элементов столбца.

Как инициализировать многомерный массив в C?

Размер многомерных массивов прогнозируется путем умножения размера различных измерений. И они хранят значения в виде двух способов, таких как основной ряд и основной столбец. А распределение памяти проверяет как свойства длины, так и свойства ранга.

В C многомерный массив имеет три типа:

  1. Двумерный массив
  2. Трехмерный массив
  3. Четырехмерный массив

1. Двумерный массив

Двумерный массив структурирован как матрицы и реализован с использованием строк и столбцов, также называемых массивом массивов. Выделение памяти выполняется либо в мажорной строке, либо в мажорной колонке. И формат по умолчанию - Row-Major. При получении двумерного массива каждый элемент считается самим одномерным массивом или известен как набор одномерного массива. Массив two-d использует два цикла for или вложенные циклы, где внешние циклы выполняются от 0 до начального индекса.

Синтаксис:

type array name ( no. of rows) ( no. of Columns);

Пример:

int td (4)(3);

здесь 4 нет. рядов и 3 нет. колонн.

Инициализация двумерного массива

Инициализация в 2-D массиве выполняется несколькими способами, это показано здесь.

int m (3)(2) = ((10, 3) (4, 2) (6, 4) (5, 4) (3, 4));
int di (2)(4) = (10, 5, 8, 12, 45, 13, 11, 61);

Здесь мы упомянули нет. строк и столбцов в поле Обязательно укажите второй индекс, чтобы компилятор понимал окончание и начало строки. В таблице ниже показано распределение памяти для двумерного массива.

Количество элементов определяется путем манипулирования количеством строк и столбцов и умножения нет. строк и столбцов соответственно. Например, нет. из элементов массив содержит B (-2… 4, -3.6). Он рассчитывается по нижней и верхней границам.

No. of rows= UB-LB +1
=4-(-2) +1 = 4+2+1= 7
No. of columns = UB-LB +1
= 6-(-3) + 1= 11
No. of elements = Rows * columns = 7 * 11 =77 elements

Реализация

Это делается с использованием Row Major и Column-Major.

Роу-майор:
Формула для манипулирования адресом имеет вид:
= B +W ( n(I-1) +(J-1))
Где b- это базовый адрес и n- количество столбцов для W байтов.
Основная колонка:
= B +W ( r(j-1) +(i-1))
где r - это нет. рядов.

Примеры двумерного массива

Примерами двумерного массива являются:

Пример № 1

Каждому элементу массива A (-10.10, 20 … 35) требуется 1 байт памяти. И массив помещается в основной колонке по адресу 400. Найдите местоположение A (0, 30).

Решение

BA =400, W=1
R = no. of rows -> 10-(-10) +1 = 21
I= -10; J= 20
Address A (0, 30) = 400 + 1((0-(-10) +21(30-20))) =400 +(10+21*10)
=400 +(10+210) = 620

Знакомая операция, выполняемая в двумерном массиве, - это алгебра матриц с m * n Matrix of B. Математическая концепция матрицы реализована так же, как и в программировании.

В приведенном ниже примере элемент хранится в матричном формате и печатается так же.

Код:

#include
int main ()
(
int a(3)(4), i, j;
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("Enter arr(%d)(%d): ", i, j);
scanf("%d", &a(i)(j));
)
)
printf("\nEntered 2-D array is: \n\n");
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("%3d ", a(i)(j) );
)
printf("\n");
)
return 0;
)

Выход:

Пример № 2

C программа выполняет сумму двух матриц.

Код:

#include
int main()
(
int mat(20)(20);
int i, j, r, c;
int s;
printf("Enter number of Rows :");
scanf("%d", &r);
printf("Enter number of Cols :");
scanf("%d", &c);
printf("\nEnter matrix elements :\n");
for(i=0;i< r;i++)
( for(j=0;j< c;j++)
(
printf("Enter the number of inputs (%d, %d) : ", i+1, j+1);
scanf("%d", &mat(i)(j));
)
)
printf("\n");
for(i=0;i< r;i++)
(
s=0;
for(j=0;j< c;j++)
(
printf("%d\t", mat(i)(j));
s+=mat(i)(j);
)
printf("\tSUM : %d", s);
printf("\n");
)
)

Вышеприведенная программа вычисляет сумму двух матриц A (20, 20) B (20, 20), если они имеют две одинаковые матрицы. Через цикл for требуется две входные матрицы и циклы, чтобы принять матрицу.

Выход:

Пример № 3

Транспонировать матрицы

Чередование строк и столбцов для формирования новой матрицы, известной как транспонирование матрицы.

Пример:

Тогда транспонировать дают,

Matrix Transpose Using C программа

Код:

#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)

В приведенной выше программе Для чтения матрицы мы использовали два цикла for, а для печати ее транспонирования вложенный цикл используется для отображения выходных данных. Здесь мы использовали матрицу 3 * 3.

Выход:

2. Трехмерный массив

Он называется массивом элементов массива или массивом матриц. Это довольно модный, но как только вы попрактиковаетесь в логике, его будет проще реализовать. и для этого трехмерного массива требуется более трех измерений и для хранения требуется объем памяти.

Это может быть объявлено как:

data_type array_name (table name) ( no. of row) ( no. of column) int L(m)(n) (p);

int L (3) (4) (2); Здесь массив L может содержать 24 элемента. И все это может быть инициализировано во время процесса компиляции, но когда оно не инициализировано, оно помещается в мусорное значение.

Инициализация может быть выполнена так же, как двумерный массив. Вот образец,

int L (2)(3)(4) = (((2, 2, 1, 3), (1, 6, 5, 11), (22, 11, 13, 5)), ((13, 5, 77, 8), (6, 8, 2, 4), (3, 2, 7, 8)));

Примеры трехмерной матрицы

Вот несколько примеров трехмерного массива, которые приведены ниже:

Пример № 1

Ниже приведен простой пример программирования на C, иллюстрирующий трехмерный массив. Это делается с помощью цикла, рассматривая 3 для циклов для 3d-элементов.

Код:

#include
void main()
(
printf("three dimensional array!\n\n");
int i, j, k, s(2)(1)(2), siz;
siz=2*1*2;
printf("Enter %d elements: \n", siz);
for(i = 0; i < 2; ++i)
(
for (j = 0; j < 1; ++j)
(
for(k = 0; k < 2; ++k )
(
scanf("%d", &s(i)(j)(k));
)
)
)
printf("The stored values are:\n\n");
for(i = 0; i < 2; i++)
(
for (j = 0; j < 1; j++)
(
for(k = 0; k < 2; k++)
(
printf("sample(%d)(%d)(%d) = %d\n", i, j, k, s(i)(j)(k));
)
)
)
)

Выход:

Пример № 2

Еще один пример трехмерного массива для автоматической печати элементов.

Код:

#include
int main()
(
int m(2)(3)(2) =
(
( (1, 2), (3, 5), (6, 5) ),
( (8, 3), (8, 7), (9, 11) )
);
for (int i = 0; i <2; ++i)
(
for (int j = 0; j <3; ++j)
(
for (int k = 0; k <2; ++k)
printf("Value at m(%d)(%d)(%d) = %d\n", i, j, k, m(i)(j)(k));
)
)
)
return 0;
)

Выход:

3. Четырехмерный массив

Это массив трехмерных массивов, и он очень сложен в управлении измерениями. Он рассматривается как куча кубов вместе и применим для пространственных векторов.

Декларация 4-го массива:

Введите имя массива (1) (2) (3) (4) ……. (n) где 1, 2 обозначает размеры, а n обозначает n-е размеры.

Пример:

int state (5)(6)(7)(8);

Пример четырехмерного массива

C программа для реализации 4-D массива.

Код:

#include
int main()
(
int i, j, k, l, s;
int d(2)(2)(2)(2);
s = 2;
d(0)(0)(0)(0) = 4;
d(0)(0)(0)(1) = 3;
d(0)(0)(1)(0) = 2;
d(0)(0)(1)(1) = 6;
d(0)(1)(0)(0) = 6;
d(0)(1)(0)(1) = 8;
d(0)(1)(1)(0) = 1;
d(0)(1)(1)(1) = 2;
d(1)(0)(0)(0) = 6;
d(1)(0)(0)(1) = 9;
d(1)(0)(1)(0) = 5;
d(1)(0)(1)(1) = 1;
d(1)(1)(0)(0) = 9;
d(1)(1)(0)(1) = 7;
d(1)(1)(1)(0) = 5;
d(1)(1)(1)(1) = 7;
for (i = 0; i < s; i++) (
for (j = 0; j < s; j++) (
for (k = 0; k < s; k++) (
for (l = 0; l < s; l++) (
printf("Value of stdio(%d)(%d)(%d)(%d): %d ", i, j, k, l, d(i)(j)(k)(l));
printf("\n");
)
)
)
)
return 0;
)

Выход:

Вывод

В конце этой статьи мы обсудили многомерные массивы и их подтипы в C-программировании. А также их объявление и доступ к элементам в матричном формате. Эти методы применяются в такой концепции, как бинарный поиск и реализация сортировки. Здесь индекс играет ключевую роль, поскольку они определяют элемент в структуре массива.

Рекомендуемые статьи

Это руководство по многомерному массиву в C. Здесь мы обсуждаем, как инициализировать многомерный массив в C вместе с примерами. Вы также можете посмотреть следующие статьи, чтобы узнать больше

  1. Лучшие компиляторы Си
  2. 2D массивы в C #
  3. 2-D массивы в C
  4. C Классы Хранения
  5. C умножение матриц программирования
  6. 3 различных типа массивов в PHP (примеры)
  7. Как работает массив в Unix с синтаксисом?