Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
гавно для печати.docx
Скачиваний:
12
Добавлен:
21.09.2019
Размер:
171.17 Кб
Скачать

9. Двумерныемассивы в c#. Виды двумерных массивови способы их определения; способы создания; построчный вывод на экран

Двумерный массив - это одномерный массив, элементами которого являются одномерные массивы. Другими словами, это набор однотипных данных, имеющий общее имя, доступ к элементам которого осуществляется по двум индексам. Наглядно двумерный массив удобно представлять в виде таблицы, в которой n строк и m столбцов, а под ячейкой таблицы, стоящей в i-й строке и j-м столбце понимают некоторый элемент массива a[i,j].

Массивы в С# могут быть объявлены с любым кол-вом измерений. Рассм. простейший многом. массив – двумерный или прямоугольный. При объявлении в [ ] через запятую указывается размер массива для каждого измерения. Объявим, например, матрицу 1020 целых чисел: int [,] Matrix = newint[10,20]; // Создаётся ссылочная переменная двухмерного массива

Пример: заполняем матрицу 34 числами от 1 до 12

using System; Class Dwumas

{ public static void Main() { int i, j; int [,] Matr = new int [3,4];

for (i = 0; i < 3; i + +) { for (j = 0; j < 4; j ++) { Matr [i,j] = (i*4) + j + 1;

Console. Write(Matr [i,j] + “ ”); } Console. WriteLine(); }

Альтернативный способ доступа к элементам массива – цикл foreach.

Пример использования foreach для вывода элементов массива:

using System; class use mas { static void Main() {

Console. WriteLine(“Сколько чисел вы хотите ввести”);

int n = int32. Parse(Console. ReadLine());

int [ ] Mas = new int [n]; for (int k = 0; k < n; k + +)

{ Console. WriteLine(“Введитечисло”);

Mas [k] = int32.Parse(Console. ReadLine()); }

foreach(int z in Mas) Console. WriteLine(“Это число {0}”, z); } }

Массивом наз. упорядоченную совок-сть эл-тов одного типа. Каждый эл-т массива имеет индексы, определяющие порядок эл-тов. Число индексов хар-ет размерность массива. Каждый индекс измен. в некот. диапазоне [a,b]. Диапазон [a,b] наз. граничной парой, a - нижней границей, b - верхней границей индекса. При объявлении массива границы задаются выражениями. Если все границы заданы константными выражениями, то число эл-тов массива известно в момент его объявления и ему может быть выделена память еще на этапе трансляции. Такие массивы наз. статическими. Если же выражения, задающие границы, зависят от переменных, то такие массивы наз. Динамическими. Массиву выделяется непрерывная обл. памяти.

C# поддерживает многомерные массивы двух видов. Первый вид - прямоугольные массивы.

  1. int [] k = new int [2, 3]

  2. int[,] k = {{ 2, -2 }, { 3, -22 }, { 0, 4 }};

Двумерный прямоугольный массив - это массив в каждой строке которых одинаковое число столбцов. Он инициализируется так: string [,] (двумерный массив строк). Второй вид - неровные массивы. Каждый ряд неровного двумерного массива может содержать различное число столбцов. При создании нервных массивов на самом деле формируется массив массивов

Наряду с прямоугольными массивами существуют так называемые ступенчатые. Вот пример: //Объявляем 2-мерный ступенчатый массив int[][] k = new int [2][];

Обратите внимание, что у ступенчатых массивов мы задаем несколько пар квадратных скобок (по размерности массива). И точно так же мы что-нибудь делаем с элементами массива — записываем, читаем и т. п. Самая важная и интересная возможность ступенчатых массивов — это их «непрямоугольность». Так, в приведенном выше примере в первой «строке» массива к три целых числа, а во второй — восемь.

Реализовать построчный вывод на экран можно с помощью такого вида программного кода:

for (kk = 0; kk < n; kk++) { for (mm = 0; mm < n; mm++) Console.WriteLine(mas[kk, mm] + " "); }