Массивы. Многомерные массивы
Массивом называют упорядоченную совокупность одного типа. Каждый элемент массива имеет свой порядковый номер (индекс). Количество элементов определяет размерность массива. Индексы элементов задаются целочисленным типом данных. Массивы бывают статические и динамические.
Многомерные массивы имеют сходные объявления с одномерные, при этом размерность массива задается за счет использования запятых. Число запятых, увеличенное на 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();
}