Задачи Масиви
Масивите представля¬ват съвкупности от променливи, които наричаме елементи:
Елементите на масивите в C# са номерирани с числата 0, 1, 2, ... N-1. Тези номера на елементи се наричат индекси. Броят елементи в даден масив се нарича дължина на масива. Всички елементи на даден масив са от един и същи тип, независимо дали е примитивен или референтен. Това ни помага да представим група от еднородни елементи като подредена свързана последователност и да ги обработваме като едно цяло. Масивите могат да бъдат от различни размерности, като най-често използвани са едномерните и двумерните масиви. Едномерните масиви се наричат още вектори, а двумерните – матрици.
Масиви в C# декларираме по следния начин: int[] DelyanaArray; При декларация на променливата от тип масив, тя пред¬ставлява референция (reference), която няма стойност (сочи към null), тъй като още не е заделена памет за елементите на масива.
В C# масив се създава с ключовата дума new, която служи за заделяне (алокиране) на памет:
int[] myArray = new int[6];//Създаване на масив с 6 елемента
При заделянето на масив в квадратните скоби се задава броят на елемен¬тите му (цяло неотрицателно число) и така се фиксира неговата дължина. Типът на елементите се пише след new, за да се укаже за какви точно елементи трябва да се задели памет.
Преди да използваме елемент от даден масив той трябва да има начална стойност. В някои езици за програмиране не се задават начални стойности по подразбиране, и тогава при опит за достъпване на даден елемент може да възникне грешка. В C# всички променливи, включително и елементите на масивите имат начална стойност по подразбиране (default initial value). Тази стойност е равна на 0 при числените типове или неин еквивалент при нечислени типове (например null за референтни типове и false за булевия тип).
int[] DelyanaArray = { 1, 2, 3, 4, 5, 6 };
Достъпът до елементите на масивите е пряк и се осъществява по индекс. Всеки елемент може да се достъпи с името на масива и съответния му индекс (пореден номер), поставен в квадратни скоби. Можем да осъще¬ствим достъп до даден елемент както за четене така и за писане т.е. да го третираме като най-обикновена променлива.
int[] array = { 1, 2, 3, 4, 8 };//Създаване на масив и инициализиране на елементи
array[4] = 3;//Елемент на позиция 4, присвоява стойност 3
array[0] = 5;//Елемент на позиция 0, присвоява стойност 5
Пример: Обръщане елементите на масив
int[] array = { 1, 2, 3, 4, 5 };
int length = array.Length;
int[] reversed = new int[length];
for (int index = 0; index < length; index++)
{
reversed[length - index - 1] = array[index];
}
for (int index = 0; index < length; index++)
{
Console.Write(reversed[index] + " ");
}
Резултат:
5 4 3 2 1
Многомерни масиви
В практиката често се ползват масиви с повече от едно измерения. Всеки допустим в C# тип може да бъде използван за тип на елементите на масив. Масивите също може да се разглеждат като допустим тип. Така можем да имаме масив от масиви.
Едномерен масив от цели числа декларираме с int[], а двумерен масив с int[,].
int[,] twoDimentionalArray;
На теория няма ограничения за броя на размерностите на тип на масив, но в практиката масиви с повече от две размерности са рядко използвани.
Инициализацията на многомерни масиви е аналогична на инициали¬за¬цията на едномерните. Стойностите на елементите могат да се изброяват непосредствено след декларацията:
int[,] matrix =
{
{1, 2, 3, 4}, // row 0 values
{5, 6, 7, 8}, // row 1 values
};
// The matrix size is 2 x 4 (2 rows, 4 cols)
Матриците имат две размерности и съответно всеки техен елемент се достъпва с помощта на два индекса – един за редовете и един за коло¬ните. Многомерните масиви имат различен индекс за всяка размерност. Всяка размерност в многомерен масив започва от индекс нула.
// Declare and initialize a matrix of size 2 x 4
int[,] matrix =
{
{1, 2, 3, 4}, // row 0 values
{5, 6, 7, 8}, // row 1 values
};
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();
}
// Print the matrix on the console
Резултат:
1 2 3 4
5 6 7 8