Массивы. Многомерные массивы

Массивом называют упорядоченную совокупность одного типа. Каждый элемент массива имеет свой порядковый номер (индекс). Количество элементов определяет размерность массива. Индексы элементов задаются целочисленным типом данных. Массивы бывают статические и динамические.

Многомерные массивы имеют сходные объявления с одномерные, при этом размерность массива задается за счет использования запятых. Число запятых, увеличенное на 1 задает размерность массива. Одномерные массивы позволяют задавать такие математические структуры как векторы. Двумерные - матрицы. Трехмерные - кубы данных. Массивы большей размерности - многомерные кубы данных.

static void Main(string[] args)

Пример:

static void Main(string[] args)

{

int[,] matrix1 = { { 1, 2 }, { 3, 4 } };

int[,] matrix2 = new int[3, 3];

int i, j;

Console.Write("\nmatrix1: \n");

for (i = 0; i < 2; i++)

{

for (j = 0; j < 2; j++)

Console.Write("\t" + matrix1[i, j]);

Console.Write("\n");

}

// Инициализация генератора случайных чисел

Random rand = new Random();

Console.Write("\nmatrix2: \n");

for (i = 0; i < 3; i++)

{

for (j = 0; j < 3; j++)

{

matrix2[i, j] = rand.Next(10);

Console.Write("\t" + matrix2[i, j]);

}

Console.Write("\n");

}

Console.ReadKey();

}

Массивы. Массивы массивов

Массивом называют упорядоченную совокупность одного типа. Каждый элемент массива имеет свой порядковый номер (индекс). Количество элементов определяет размерность массива. Индексы элементов задаются целочисленным типом данных. Массивы бывают статические и динамические.

Массивы массивов можно рассматривать как одномерный массив, элементы которого являются массивы. Элементы, которых в свою очередь, снова могут быть массивами и так может продолжаться до некоторого уровня вложенности. Эти массивы могут применяться для представления деревьев, у которых узлы могут иметь произвольное число потомков. Если при объявление многомерных массивов для указания размерности используются запятые, то для массивов массивов применяться совокупности пар квадратных скобок.

Пример объявления массива массивов:

Объявление и инициализация

int[][] M= new int[3][]{new int[] {5,7,9,11}, new int[] {2,8} new int[] {6,12,4}};

Массив массивов имеет два уровня на верхнем уровне расположено 3 элемента, каждый из которых является массивом. Для каждого вложенного массива необходимо использовать команду new что бы создать внутренний массив. В данном примере элементы внутренних массивов получат конкретные значения при объявление массива. Допустимо так же объявлять массивы массивов без инициализации элементов

int[][]M1= new int[3][] {new int[4], new int[2], new int[3]};

Пример:

static void Main(string[] args)

{

//массив массивов -"Отцы и дети"

int Fcount = 3;

string[] Fathers = new string[Fcount];

Fathers[0] = "Николай";

Fathers[1] = "Сергей";

Fathers[2] = "Петр";

string[][] Children = new string[Fcount][];

Children[0] = new string[] { "Ольга", "Федор" };

Children[1] = new string[] { "Сергей", "Валентина", "Ирина", "Дмитрий" };

Children[2] = new string[] { "Мария", "Ирина", "Надежда" };

for (int i = 0; i < Fathers.Length; i++)

{

Console.WriteLine("Отец : {0}; Его дети:", Fathers[i]);

for (int j = 0; j < Children[i].Length; j++)

Console.Write(Children[i][j] + " ");

Console.WriteLine();

}

Console.ReadKey();

}

Массивы. Класс Array

Массивом называют упорядоченную совокупность одного типа. Каждый элемент массива имеет свой порядковый номер (индекс). Количество элементов определяет размерность массива. Индексы элементов задаются целочисленным типом данных. Массивы бывают статические и динамические.

На платформе .Net все массивы происходят от одного общего (базового) класса Array. Поэтому все созданные в программе массивы обеспечиваются специальным набором методов для создания, управления, поиска и сортировки элементов массива.

Свойства:

int Lenght - Возвращает целое число представляющее общее количество элементов во всех измерениях массива.

int Rank - Возвращает целое число обозначающие количество измерений массива (размерность).

Методы:

Array Createlnstance(тип, колличество_эп_int, количество_эп_int); - метод (один из вариантов), создает массив элементов заданного типа и определенной размерности.

int GetLenght(номер_размерности_int); - возвращает количество элементов заданной параметром размерности. Нумерация размерности массива начинается с нуля.

void SetValue(значение, позиция_х_int, позиция_у_int); - присваивает элементам массива значения.

GetValue(позиция_х_int,позиция_у_int); - извлекает значение из массива.

Clear - выполняет начальную инициализацию элементов.

GetLowerBound, GetUpperBound - возвращает верхнюю и нижнюю границу по указанному элементу.

Copy - копирует часть массива и весь массив в другой массив.

CopyTo - Копирует все элементы одномерного массива, в другой одномерный массив, начиная с заданного индекса.

IndexOf - выполняет поиск вхождения элемента в массив, если элемент в массиве отсутствует метод вернет 1, иначе будет возвращена позиция искомого элемента в массиве.

LastIndexOf - выполняет тоже, что и IndexOf, но поиск элементов выполняется с конца массива.

BinarySearch - выполняет поиск элементов, в массиве основываясь на двоичном представление значение.

Reverse - меняет порядок элементов массива на обратный

Sort - выполняет сортировку элементов

Clone - позволяет создать копию массива.

Методы перегружены и имеют ряд модификаций. Подробная информация по методам класса доступна в справочной системе через F1. Статические методы вызываются через имя класса, динамические через имя объекта этого класса.

Пример:

static void Main(string[] args)

{

// Создали и проинициализировали двумерный массив строк.

Array myArray = Array.CreateInstance(typeof(String), 2, 4);

myArray.SetValue("Каждый ", 0, 0);

myArray.SetValue("охотник ", 0, 1);

myArray.SetValue("желает ", 0, 2);

myArray.SetValue("знать,", 0, 3);

myArray.SetValue("Где ", 1, 0);

myArray.SetValue("сидит ", 1, 1);

myArray.SetValue("фазан.", 1, 2);

myArray.SetValue("", 1, 3);

// Показали содержимое массива.

Console.WriteLine("Массив myArray:");

for (int i = 0; i < myArray.GetLength(0); i++)

for (int j = 0; j <= myArray.GetLength(1); j++)

Console.WriteLine("\t[{0},{1}]:\t{2}", i, j, myArray.GetValue(i, j));

// Показали содержимое массива.

Console.WriteLine("Массив myArray:");

for (int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++)

for (int j = myArray.GetLowerBound(1); j <= myArray.GetUpperBound(1); j++)

Console.WriteLine("\t[{0},{1}]:\t{2}", i, j, myArray.GetValue(i, j));

//объявление массивов с отложенной инициализацией

int[] u, v;

u = new int[3];

for (int i = 0; i < 3; i++) u[i] = i + 1;

v = new int[4];

v = u; //допустимое присваивание - массив v стал включать 3 элем.

Console.WriteLine("Массив u:");

for (int i = 0; i < 3; i++)

Console.WriteLine("\t[{0}]:\t{1}", i, u[i]);

Console.WriteLine("Массив v:");

for (int i = 0; i < 3; i++)

Console.WriteLine("\t[{0}]:\t{1}", i, v[i]);

Console.ReadKey();

}