|
Программирование >> Обработка исключительных ситуаций
Рис. 6.4. Структурная схема алгоритма для листинга 6.2 Листинг 6.2. Работа с двумерным массивом using System; namespace ConsoleApplication1 class Classl static void MainO const int m = 3, n = 4; int[,] a = new int[m, n] { 2,-2. 8. 9 }. {-4,-5. 6,-2 }, Глава 6. Массивы и строки Листинг 6.2 {продолжение) { 7, 0, 1, 1 } Console.WriteLineC Исходн1й массив: ); for ( int i = 0; i < m; ++i ) for ( int j = 0; j < n; ++j ) Console.WriteC \t + a[i, j] ); Console.WriteLineC); double sum = int nPosEI; for ( int i = 0; i < m; ++i ) nPosEI = 0; for С int j = 0; j < n: ++j ) sum += a[i, j] ; if ( a[i. j] > 0 ) ++nPosEl; Console.WriteLineC В строке {0} {1} положит-х элементов , i, nPosEI ); Console.WriteLineC Среднее арифметическое всех элементов: + sum / m / n ) ; ПРИМЕЧАНИЕ - Для суммирования элементов описана переменная sum вещественного типа. Если описать ее как целую, при делении на количество элементов будет отброшена дробная часть. Обратите внимание на то, что переменная sum обнуляется перед циклом просмотра всей матрицы, а количество положительных элементов - перед циклом просмотра очередной строки, поскольку для каждой строки его вычисление начинается заново. Ступенчатые массивы В ступенчатых массивах количество элементов в разных строках может различаться. В памяти ступенчатый массив хранится иначе, чем прямоугольный: в виде нескольких внутренних массивов, каждый из которых имеет свой размер. Кроме того, выделяется отдельная область памяти для хранения ссылок на каждый из внутренних массивов. Организацию ступенчатого массива иллюстрирует рис. 6.5. Ссылки на строки а[1] >а[0] 1] fo] Рис. 6.5. Ступенчатый массив Описание ступенчатого массива: тип[][] имя; Под каждый из массивов, составляющих ступенчатый массив, память требуется выделять явным образом, например:
Здесь а[0],а[1] и а[2] - это отдельные массивы, к которым можно обращаться по имени (пример приведен в следующем разделе). Другой способ выделения памяти: \it[][ ] а = { new int[5] , new int[3] , new int[4 ] }; К элементу ступенчатого массива обращаются, указывая каждую размерность в своих квадратных скобках, например: = :i][2] a[i][i] a[i][i] В остальном использование ступенчатых массивов не отличается от использования прямоугольных. Невыровненные массивы удобно применять, например, для работы с треугольными матрицами большого объема. Класс System.Array Ранее уже говорилось, что все массивы в С# построены на основе базового класса Array, который содержит полезные для программиста свойства и методы, часть из которых перечислены в табл. 6.1. массив
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |