- •Глава 9. Многомерные массивы
- •9.1 Прямоугольные массивы
- •9.1.1 Объявления и инициализация
- •9.1.2 Примеры
- •9.2 Ступенчатые массивы
- •9.2.1 Объявления и инициализация
- •9.2.2 Примеры
- •9.3 Оператор цикла с перебором foreach
- •9.4 Массивы с числом размерностей больше двух
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
- •Глава 10. Исключительные ситуации
- •10.1 Основные понятия
- •10.2 Механизм обработки исключений
- •10.3 Примеры обработки исключений
- •10.4 Оператор throw
- •10.5 Дополнительные сведения
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
- •Глава 11. Обработка текстовой информации
- •11.1 Символьный тип char
- •11.2 Массив символов
- •11.3 Тип String
- •11.4 Класс StringBuilder
- •11.5 Форматирование строк
- •Контрольные вопросы
- •Варианты заданий для самостоятельной работы
9.1.2 Примеры
Пример 1. Для целочисленной матрицы размером m*n вычислить сумму элементов в каждой строке (рис. 9.1).
Рисунок 9.1 – Матрица изm строк иn столбцов
Нахождение суммы элементов каждой строки требует просмотра матрицы по строкам. Схема алгоритма приведена на рисунке 9.2, программа – в листинге 1.
Листинг 1- Программа к примеру 1
using System;
namespace ConsoleApplication1
{ class Class1
{ static void Main()
{ const int m = 3, n = 4;
int[,] a = new int[m, n] {
{ 2, 2, 8, 9 },
{ 4, 5, 6, 2 },
{ 7, 0, 1, 1 }
};
Console.WriteLine("Исходный массив:");
for ( int i = 0; i < m; ++i)
{ for ( int j = 0; j < n; ++j )
Console.Write( " " + a[i, j]);
Console.WriteLine();
}
for ( int i = 0; i < m; ++i )
{ int sum = 0;
for ( int j = 0; j < n; ++j )
sum += a[i, j];
Console.WriteLine("В строке {0}сумма элементов {1}",i, sum );
}
Console.Read();
}
}
}
Рисунок 9.2 – Схема алгоритма к примеру 1
Результат работы программы:
Следует обратить внимание на то, что переменная sumобнуляется перед циклом просмотра очередной строки матрицы, поскольку для каждой строки его вычисление начинается заново.
Пример 2. Поиск максимального элемента в двумерном массиве.
Схема алгоритма решения данной задачи представлена на рисунке 9.3, а программа в листинге 2.
Решение поставленной задачи осуществляется с помощью цикла по параметру i, изменяющегося шагом+1от0доm-1с вложенным циклом по параметруj, изменяющемуся шагом+1от0доn-1.
Перед входом в цикл переменной maxприсваивается значениеу[0,0]элемента массива. С каждым изменением параметра jпроисходит переход к новому элементу той же строки массива и сравнение его значения со значением переменнойmax.
Если значение элемента массива больше, то maxприсваивается значение элемента массива с текущим порядковым номером. Когда при данном значении параметраiзавершается цикл по параметруj, происходит изменение параметраiи переход к новой строке двумерного массива.
Рисунок 9.3 – Схема алгоритма к примеру 2
Листинг 2 – Программа к примеру 2
using System;
namespace ConsoleApplication1
{ class Program
{ static void Main(string[] args)
{ const int m = 3, n = 4;
int[,] y = new int[m, n] {
{ 2, 2, 8, 9 },
{ 4, 5, 6, 2 },
{ 7, 0, 1, 1 }
};
Console.WriteLine("Исходный массив:");
for (int i = 0; i < m; ++i)
{ for (int j = 0; j < n; ++j)
Console.Write(" " + y[i, j]);
Console.WriteLine();
}
int max=y[0,0];
for (int i = 0; i < m; ++i)
{ for (int j = 0; j < n; ++j)
if (y[i, j] > max) max = y[i, j];
}
Console.WriteLine("Наибольший элемент в матрице "+ max);
}
}
}
Результаты работы программы: