Матрици

by Kaloyan

Artwork: Kaloyan Nikiforov

This free e-book was created with
Ourboox.com

Create your own amazing e-book!
It's simple and free.

Start now

Матрици

by

Artwork: Kaloyan Nikiforov

  • Joined May 2022
  • Published Books 1
  1. Какво е масив:

 

Масивите са неизменна част от повечето езици за програмиране. Те представля­ват съвкупности от променливи, които наричаме елементи.

 

 

2

2. Как се декларира масив

 

Масиви в C# декларираме по следния начин:

 

int[] myArray;

 

В примера променливата myArray е името на масива, който е от тип (int[]), т.е. декларирали сме масив от цели числа. С [] се обозначава, че промен­ливата, която декларираме е масив от елементи, а не единичен елемент.

 

Двумерен масив с int[,]. В следния пример показва това:

 

int[,] twoDimentionalArray;

3

Такива масиви ще наричаме двумерни, защото имат две измерения или още матрици (терминът идва от математиката). Масиви с повече от едно измерение ще наричаме многомерни.

 

Аналогично може да декларираме и тримерни масиви като добавим още едно измерение:

 

int[,,] threeDimentionalArray;

 

 

На теория няма ограничения за броя на размерностите на типа на масиви, но в практиката масиви с повече от две размерности са рядко използвани и затова ще се спрем по-подробно на двумерните масиви.

 

 

4

3. Матрица

 

Матриците имат две размерности и съответно всеки техен елемент се достъпва с помощта на два индекса – един за редовете и един за коло­ните. Многомерните масиви имат различен индекс за всяка размерност.

 

Важно:

Всяка размерност в многомерен масив започва от индекс нула.

Пример:

int[,] matrix =

{

      {1, 2, 3, 4},    

      {5, 6, 7, 8},

};
5

Масивът matrix има 8 елемента, разположени в 2 реда и 4 колони. Всеки елемент може да се достъпи по следния начин:

 

matrix[0, 0]  matrix[0, 1]  matrix[0, 2]  matrix[0, 3]

matrix[1, 0]  matrix[1, 1]  matrix[1, 2]  matrix[1, 3]

 

В горния пример виждаме как да достъпим всеки елемент по индекс. Ако означим индекса по редове с row, а индекса по колони с col, тогава достъпа до елемент от двумерен масив има следния общ вид:

 

matrix[row, col]

 

При многомерните масиви всеки елемент се идентифицира уникално с толкова на брой индекси, колкото е размерността на масива:

 

n Dimensional Array [index 1,…, index N]
6

4. Дължина на многомерен масив

Всяка размерност на многомерен масив има собствена дължина, която е достъпна по време на изпълнение на програмата. Нека разгледаме след­ния пример за двумерен масив:

 

int [,] matrix =

{

{1, 2, 3, 4},

{5, 6, 7, 8},

}


Можем да извлечем броя на редовете на този двумерен масив чрез 
matrix.GetLength(0), а дължината на всеки от редовете (т.е. броя колони) с matrix.GetLength(1).

7

5. Пример за отпечатване на матрици:

 

int[,] matrix =

{

      {1, 2, 3, 4}, 

      {5, 6, 7, 8}, 

};

 

for (int row = 0; row < matrix.GetLength(0); row++)

{

      for (int col = 0; col < matrix.GetLength(1); col++)

      {

      Console.Write(matrix[row, col]);

      }

      Console.WriteLine();

}

 

 

8

Първо декларираме и инициализираме масива, който искаме да обходим и да отпечатаме на конзолата. Масивът е двумерен и затова използваме един цикъл, който ще се движи по редовете и втори, вложен цикъл, който за всеки ред ще се движи по колоните на масива. За всяка итерация по подходящ начин извеждаме текущия елемент на масива като го достъп­ваме по неговите два индекса (ред и колона). В крайна сметка, ако изпълним горния програмен фрагмент, ще получим следния резултат:

 

 

1 2 3 4

5 6 7 8
9

6. Пример за четене на матрица от конзола:

 

 Това става като първо въведем големините на двете размерности, а след това с два вложени цикъла въвеждаме всеки от елементите му:

 

Console.Write("Enter the number of the rows: ");

int rows = int.Parse(Console.ReadLine());




Console.Write("Enter the number of the columns: ");

int cols = int.Parse(Console.ReadLine());




int[,] matrix = new int[rows, cols];




Console.WriteLine("Enter the cells of the matrix:");




for (int row = 0; row < rows; row++)

{

      for (int col = 0; col < cols; col++)

      {

      Console.Write("matrix[{0},{1}] = ",row,col);

      matrix[row, col] = int.Parse(Console.ReadLine());

      }

}




for (int row = 0; row < matrix.GetLength(0); row++)

{

      for (int col = 0; col < matrix.GetLength(1); col++)

      {

      Console.Write(" " + matrix[row, col]);

      }

      Console.WriteLine();

}
10

Ето как може да изглежда програмата в действие (в случая въвеждаме масив с размер 3 реда на 2 колони):

 

Enter the number of the rows: 3

Enter the number of the columns: 2

Enter the cells of the matrix:

matrix[0,0] = 2

matrix[0,1] = 3

matrix[1,0] = 5

matrix[1,1] = 10

matrix[2,0] = 8

matrix[2,1] = 9

 2 3

 5 10

 8 9
11
This free e-book was created with
Ourboox.com

Create your own amazing e-book!
It's simple and free.

Start now

Ad Remove Ads [X]
Skip to content