Слайд 1Лекция 15.
Двумерные массивы
дисциплина «Программирование»
Козьминых Н.М.
Слайд 2Многомерные массивы
Козьминых Н.М.
Многомерным называется такой массив, который отличается двумя или
более измерениями, причем доступ к каждому элементу такого массива осуществляется
с помощью определенной комбинации двух или более индексов
Многомерный массив индексируется двумя и более целыми числами
Слайд 3Двумерные массивы
Козьминых Н.М.
Простейшей формой многомерного массива является двумерный массив
Местоположение любого
элемента в двумерном массиве обозначается двумя индексами
Двумерный массив можно представить
в виде таблицы, на строки которой указывает один индекс, а на столбцы — другой
Слайд 4Двумерные массивы
Козьминых Н.М.
Слайд 5Определение значений элементов массива и вывод его на экран
Козьминых Н.М.
Слайд 6
Козьминых Н.М.
private void btnInput_Click(object sender, EventArgs e) {
Random rand = new Random();
int m = Convert.ToInt32(txtM.Text); // количество строк
int n = Convert.ToInt32(txtN.Text); // количество столбцов
int[,] a = new int[m, n];
for (int i = 0; i < a.GetLength(0) ; i++) {
for (int j = 0; j < a.GetLength(1); j++) {
a[i, j] = rand.Next(-10, 10);
}
}
vivod(a, grv1);
}
private void vivod(int[,] x, DataGridView grid) {
grid.Rows.Clear();
grid.RowCount = x.GetLength(0);
grid.ColumnCount = x.GetLength(1);
for (int i = 0; i < x.GetLength(0); i++) {
for (int j = 0; j < x.GetLength(1); j++) {
if (i == 0) {
grid.Columns[j].Name = (j + 1).ToString();
grid.Columns[j].Width = 30;
}
grid.Rows[i].Cells[j].Value = (x[i, j]).ToString();
}
}
}
Слайд 71. Заполнить элементы квадратной матрицы
Козьминых Н.М.
1. Заполнить элементы квадратной матрицы
на главной диагонали единицами, остальное нулями
Слайд 81. Заполнить элементы квадратной матрицы
Козьминых Н.М.
1. Заполнить элементы квадратной матрицы
на главной диагонали единицами, остальное нулями
private void task1(ref int[,]
b) {
for (int i = 0; i < b.GetLength(0); i++)
b[i, i] = 1;
}
Слайд 91. Заполнить элементы квадратной матрицы
Козьминых Н.М.
2. Заполнить элементы квадратной матрицы
на главной диагонали номером строки
Слайд 101. Заполнить элементы квадратной матрицы
Козьминых Н.М.
2. Заполнить элементы квадратной матрицы
на главной диагонали номером строки
private void task1(ref int[,] b)
{
for (int i = 0; i < b.GetLength(0); i++)
b[i, i] = i + 1;
}
Слайд 111. Заполнить элементы квадратной матрицы
Козьминых Н.М.
3. Заполнить элементы квадратной матрицы
по образцу
Слайд 121. Заполнить элементы квадратной матрицы
Козьминых Н.М.
3. Заполнить элементы квадратной
матрицы по
образцу
private void task2(ref int[,] b) {
for
(int i = 1; i < b.GetLength(0); i++)
for (int j = b.GetLength(1) - i; j < b.GetLength(1); j++)
b[i, j] = 1;
}
Слайд 131. Заполнить элементы квадратной матрицы
Козьминых Н.М.
4. Заполнить элементы квадратной матрицы
по образцу.
Значения элементов в закрашенной области – единицы, остальное
нули
Слайд 141. Заполнить элементы квадратной матрицы
Козьминых Н.М.
private void task3(ref int[,]
b) {
int ii = Convert.ToInt32(txtI.Text);
int jj = Convert.ToInt32(txtJ.Text);
for (int i = 0; i < b.GetLength(0); i++) {
if (i == ii) continue;
for (int j = 0; j < b.GetLength(1); j++) {
if (j == jj) continue;
b[i, j] = 1;
}
}
}
Слайд 152. Вычисления
Козьминых Н.М.
1. Добавить строку, элементы которой равны суммам элементов
в соответствующих столбцах
Слайд 16
Козьминых Н.М.
private void mnuTask4_Click(object sender, EventArgs e) {
int[,] b = new int[a.GetLength(0)
+ 1, a.GetLength(1)];
init(ref b);
task4(ref b);
vivod(b, grv2);
}
private void init(ref int[,] y) {
for (int i = 0; i < a.GetLength(0); i++)
for (int j = 0; j < a.GetLength(1); j++)
y[i, j] = a[i, j];
}
private void task4(ref int[,] b) {
for (int j = 0; j < b.GetLength(1) - 1; j++) {
int S = 0;
for (int i = 0; i < b.GetLength(0); i++)
S += b[i, j];
b[b.GetLength(0) - 1, j] = S;
}
}
Слайд 172. Вычисления
Козьминых Н.М.
2. Добавить новый столбец после второго, значения элементов
которого буду равны суммам первых двух столбцов
Слайд 18
Козьминых Н.М.
private void mnuTask5_Click(object sender, EventArgs e)
{
int[,] b = new
int[a.GetLength(0), a.GetLength(1) + 1];
init(ref b);
task5(ref b);
vivod(b, grv2);
}
private void task5(ref int[,] b) {
if (b.GetLength(1) < 2)
return;
for (int j = b.GetLength(1) - 1; j > 2 ; j--)
for (int i = 0; i < b.GetLength(0); i++)
b[i, j] = b[i, j - 1];
for (int i = 0; i < b.GetLength(0); i++)
b[i, 2] = b[i, 0] + b[i, 1];
}
Слайд 19Вопросы…
Спасибо за внимание
Козьминых Н.М.