Въведение в многоизмерен масив в C

Тази статия се фокусира върху многоизмерния масив в, който се използва предимно в компютърния и изследователския анализ. Обикновено масивът линейно фокусира част от информацията, която се казва, че е едномерна. Едномерният съхранява данни само една информация като рено на студентите. В някои ситуации е необходимо да се съхраняват данни във формат на таблицата, който съдържа редове и колони или да се обработват сложни данни. За да го визуализираме, ни е необходим матричен формат, който нарекохме двуизмерни масиви, където аранжиментите изискват пиксели на изображението, графиката. Данните се съхраняват по табличен начин. Манипулациите с масив се извършват чрез пренареждане на елемент с помощта на функции като преобразуване, стискане.

Как да декларираме многоизмерен масив в C?

Синтаксис:

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

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

  • Тук име на тип данни - Означава типа елементи (цяло число, плаващ).
  • Име на масив - Обозначава име, присвоено на размерния масив.
  • Размер на редовете - Брой на редовете елементи напр. row-size = 8, след това масивът има 8 реда.
  • Размер на колоната - Брой елементи на колоната.

Как да инициализираме многоизмерния масив в C?

Размерът на многоизмерните масиви се предвижда чрез умножаване на размера на различни измерения. И те съхраняват стойности под формата на два начина като ред-главен и колона-основен. И разпределението на паметта валидира както свойства на дължина, така и ранг.

В C многоизмерният масив има три типа:

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

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

Двуизмерен масив е структуриран като матрици и се реализира с помощта на редове и колони, известни също като масив от масиви. Разпределението на паметта се извършва или в главни, и в колони. А форматът по подразбиране е Row-Major. Когато приемате 2-D масив, всеки елемент се счита за 1-D масив или е известно, че е съвкупност от 1-D масив. Двукратният масив използва два за контури или вложени цикли, където външните цикли се изпълняват от 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);

Тук сме споменали не. на редове и колони в полето Задължително е да се назначи вторият индекс, за да се направи компилатор за разбиране относно края и началото на реда. По-долу таблицата показва разпределението на паметта на 2-D масива.

Броят на елементите се определя чрез манипулиране на редица редове и колони и умножаване на не. от редове и колони съответно. за инстанцията, не. от елементи масивът съдържа 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

изпълнение

Извършва се с помощта на големи редове и основни колони

Ред-майор:
Формулата за манипулиране на адреса е дадена като:
= 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

Известна операция, извършена в 2-d масива, е Алгебра на матрици с m * n Матрица на 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 loop е необходима две входна матрица и контури за приемане на матрица.

изход:

Пример №3

Транспониране на матрица

Обмен на редове и колони за образуване на нова матрица, известна като транспониране на матрица.

Пример:

Тогава Транспонирай дай,

Матрица Транспониране с помощта на 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;
)

В горната програма За да прочетем матрица, използвахме две за контури и за да отпечатаме нейното транспониране, вложеното за цикъл се използва за показване на изхода. Тук сме използвали 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

По-долу е даден прост пример за програмиране на С, илюстриращ триизмерен масив. Извършва се с помощта на контур, като се разгледат 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

Друг пример за 3-D масив за автоматично отпечатване на елементи.

Код:

#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-D масив:

Въведете име на масив (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 заедно с примери. Можете също да разгледате следните статии, за да научите повече-

  1. Най-добрите компилатори на C
  2. 2D масиви в C #
  3. 2-D масиви в С
  4. C Класове за съхранение
  5. C Матрично умножение на програмиране
  6. 3 различни вида масиви в PHP (примери)
  7. Как работи масивът в Unix със синтаксис?