Программирование >>  Обработка исключительных ситуаций 

1 ... 41 42 43 [ 44 ] 45 46 47 ... 142



Рис. 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. Ступенчатый массив

Описание ступенчатого массива: тип[][] имя;

Под каждый из массивов, составляющих ступенчатый массив, память требуется выделять явным образом, например:

пШ П а

= new

int[3][];

выделение

памяти

ссылки на три

строки

а[0]

= new

int[5] ;

выделение

памяти

0-ю строку (5

элементов)

а[1]

= new

int[3] ;

выделение

памяти

1-ю строку (3

элемента)

a[2]

= new

int[4];

выделение

памяти

2-ю строку (4

элемента)

Здесь а[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.

массив



1 ... 41 42 43 [ 44 ] 45 46 47 ... 142

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика