Учебно-методический комплекс общее количество часов 58 ч. Лекции 28 ч
Download 2.46 Mb.
|
Язык программирования C#
- Bu sahifa navigatsiya:
- 7.4. Массив как класс. Встроенные поля и методы массива
Доступ к элементам массива.
В отличие от многомерных массивов доступ к рваным массивам осуществляется через пары квадратных скобок. К тому же рванные массивы создаются обычно в циклах. static void Main(string[] args) { char[][] Chars; Chars = new char[10][]; for (int i = 0; i < 10; i++) { Chars[i] = new char[i + 1]; for (int j = 0; j < i + 1; j++) Chars[i][j] = Convert.ToChar(i + j + 100); } for (int i = 0; i < 10; i++) { for (int j = 0; j < i + 1; j++) Console.Write(Chars[i][j]); Console.WriteLine(); } } Лист. 7.16 В этом коде создается ступенчатая матрица. Сначала выделяется память под её главное измерение, за тем в цикле создаются её строки этой матрицы разной длины, заполняемые символами. Во втором цикле матрица выводится на консоль. Вывод программы: d
fgh ghij hijkl ijklmn jklmnop klmnopqr lmnopqrst mnopqrstuv Вывод. 7.4 7.4. Массив как класс. Встроенные поля и методы массива В языке C# в отличие от его предшественников массив это не просто последовательность смежных ячеек в оперативной памяти. В языке C# массив – это, прежде всего объект, производный от класса System.Array, у этого класса довольно много методов и свойств. Подробно вы можете прочесть о классе System.Array в MSDN. Для работы в основном используются два члена этого класса: свойство Length и метод GetLength(). Свойство Length содержит полное количество элементов в массиве. Метод GetLength() возвращает длину каждой размерности. Перепишем некоторые из приведенных выше примеров так, чтобы в них проход по массиву ограничивался членами Length и GetLength(). static void Main(string[] args) { int[] IntArr = new int[10000]; Random rnd = new Random(DateTime.Now.Millisecond); for (int i = 0; i < IntArr.Length; i++) IntArr[i] = rnd.Next(); for (int i = 0; i < IntArr.Length; i++) Console.WriteLine(IntArr[i]); } Лист. 7.17 В этом листинге работа происходит с одномерным массивом, поэтому используется свойство Length, в котором содержится полное число элементов в массиве, а для одномерного массива оно совпадает с размерностью массива. Пример выводит 100000 случайных чисел: 766816363 ………….. 479670571 Вывод. 7.5 static void Main(string[] args) { double[,] DoubleArr = new double[10, 15]; for (int i = 0; i < DoubleArr.GetLength(0); i++) for (int j = 0; j < DoubleArr.GetLength(0); j++) DoubleArr[i, j] = i + j; for (int i = 0; i < DoubleArr.GetLength(0); i++) { for (int j = 0; j < DoubleArr.GetLength(1); j++) Console.Write(DoubleArr[i, j] + "\t"); Console.WriteLine(); } } Лист. 7.18 В этом примере мы рассматриваем двумерный массив, поэтому пользоваться свойством Length возвращающим полное количество элементов массива не удобно. Вместо свойства Length удобно воспользоваться методом GetLength(), возвращающим длину измерения по номеру этого измерения, нумерация измерений начинается с 0. Вывод примера имеет табличный вид, вот первая и последняя строки этой таблицы: 0 1 2 3 4 5 6 7 8 9 9 10 11 12 13 14 15 16 17 18 static void Main(string[] args) { double[][] Matrix; Matrix = new double[10][]; for (int i = 0; i < Matrix.Length; i++) { Matrix[i] = new double[10]; for (int j = 0; j < Matrix[i].Length; j++) Matrix[i][j] = i * 10 + j + 1; } for (int i = 0; i < Matrix.Length; i++) { for (int j = 0; j < Matrix[i].Length; j++) Console.Write(Matrix[i][j] + "\t"); Console.WriteLine(); } } Лист. 7.19 В этом листинге работа происходит с рваным массивом, а в нем измерения между собой не связаны, поэтому снова используется свойство Length для прохода по измерениям. Пример выводит числа от 0 до 100 в виде квадратной матрицы 10 на 10: 1 2 3 4 5 6 7 8 9 10 ……………………………………………………….. 91 92 93 94 95 96 97 98 99 100 Вывод. 7.6 Download 2.46 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling