Введение 8 Этапы создания Windowsприложения 8
Скачать 6.98 Mb.
|
8.2. Вывод прямоугольной матрицы в окно списка и в текстовое полеСуществует много различных способов вывода матрицы. Рассмотрим два из их: вывод в окно списка и в вывод в текстовое поле. При выводе матрицы в окно списка используется тот же прием, что и при выводе одномерного массива в текстовое поле. Сначала в некоторой дополнительной переменной формируется выводимая строка, которая затем выводится в окно списка. Переменная, предназначенная для хранения этой строки, всегда будет иметь тип String. Dim s As String Очищаем окно списка. lstMatrix.Items.Clear() Выводим поясняющий заголовок. lstMatrix.Items.Add("Матрица") Организуем цикл по всем строкам матрицы. For i = 0 To m Перед началом формирования очередной выводимой строки очищаем строковую переменную, записывая в нее пустую строку. Пустая строка обозначается кавычками, между которыми нет ни одного символа. s = "" Организуем цикл по столбцам матрицы. Он позволит нам перебрать все элементы в пределах i-й строки. For j = 0 To n К строковой переменной дописываем очередной элемент матрицы, преобразуя его к текстовому виду с помощью функции Str, и константу vbTab, которая позволит организовать вывод в несколько колонок. s += Str(a(i, j)) + vbTab Next После завершения внутреннего цикла в строковой переменной записаны все элементы i-й строки матрицы. Выводим значение этой переменной в окно списка. lstMatrix.Items.Add(s) Next Вывод матрицы в текстовое поле требует специальной настройки данного элемента управления на этапе проектирования интерфейса. Мы будем выводить матрицу в текстовое поле с именем txtMatrix. Сначала помещаем текстовое поле на форму и задаем ему имя. По умолчанию текстовое поле предназначено для вывода однострочной информации, а нам требуется вывести матрицу, состоящую из нескольких строк. Поэтому для текстового поля txtMatrix мы изменим значение свойства Multiline и зададим ему значение True. Так мы включаем для текстового поля режим многострочного вывода. После этого можно изменить вертикальный размер текстового поля, сделав его достаточным для вывода матрицы. Так как информацию в текстовое поля нельзя выводить по частям, то для вывода матрицы нам потребуется дополнительная переменная типа String, в которой будет формироваться выводимый текст. Опишем эту переменную. Dim s As String В качестве начального значения запишем в переменную поясняющий заголовок и константу vbNewLine, которая обеспечивает переход на новую строку. s = "Матрица" + vbNewLine Организуем цикл по всем строкам матрицы. For i = 0 To m Организуем цикл по столбцам матрицы. Он позволит нам перебрать все элементы в пределах i-й строки. For j = 0 To n К строковой переменной дописываем очередной элемент матрицы, преобразуя его к текстовому виду с помощью функции Str, и константу vbTab, которая позволит организовать вывод в несколько колонок. s += Str(a(i, j)) + vbTab Next После завершения внутреннего цикла в строковой переменной записаны все элементы i-й строки матрицы. Дописываем к этой переменной константу vbNewLine, чтобы следующая строка матрицы выводилась на новой строке текстового поля. s += vbNewLine Next После завершения внешнего цикла в переменной s записаны все элементы матрицы. Нам остается только вывести эту переменную в текстовое поле. txtMatrix.Text = s Полный текст программы представлен в приложении 37. Пример работы программы приведен на рис. 52. Рис. 52. Пример работы программы вывода прямоугольной матрицы в окно списка и текстовое поле 8.3. Поиск максимального элемента матрицыДля поиска максимального элемента матрицы и определения его индексов нам потребуются три дополнительные переменные. В первой из них будем хранить значение максимального элемента, а во второй – номер строки, к которой он находится, а в третьей – номер столбца. Поиск максимального элемента в матрице традиционно начинают с элемента, стоящего в нулевой строке и нулевом столбце. Затем организуют вложенные циклы, которые позволят проанализировать все элементы матрицы. Если значение какой-либо элемента матрицы окажется больше ранее найденного максимума, то значение максимума необходимо обновить, сделав равным этому элементу. При этом сразу запоминаются оба его индекса. Рассмотрим особенности программной реализации этого алгоритма. Объявляем необходимые переменные. Переменная max предназначена для хранения значения максимального элемента. Ее тип всегда должен совпадать с типом элементов матрицы. В переменной imax мы будем запоминать номер строки, в которой находится максимальный элемент матрицы, а в переменной jmax мы будем хранить номер столбца, в котором находится максимальный элемент. Эти две переменные всегда будут иметь целочисленный тип. Dim max, imax, jmax As Integer Поиск максимума мы начинаем с элемента, стоящего в нулевой строке и нулевом столбце матрицы. max = a(0, 0) В переменные imax и jmax мы записываем соответственно номера строки и столбца, которые равны нулю. imax = 0 jmax = 0 Организуем цикл по всем строкам матрицы. For i = 0 To m Организуем цикл по столбцам матрицы. Он позволит нам перебрать все элементы в пределах i-й строки. For j = 0 To n Анализируем очередной элемент матрицы. If a(i, j) > max Then Если его значение больше, чем значение ранее найденного максимума, то необходимо обновить значение максимума (переменной max), записав в него значение текущего элемента. max = a(i, j) Сразу же запоминаем индексы нового максимума. Номер строки, в которой находится данный элемент матрицы, хранится в переменной i, а номер столбца – в переменной j. imax = i jmax = j End If Next Next После завершения вложенных циклов нам остается только вывести полученные результаты в окно списка. Сначала выведем горизонтальную черту, чтобы зрительно отделить исходные данные от полученных результатов. lstMatrix.Items.Add("------------------------------") Заем выведем максимальное значение и его индексы. lstMatrix.Items.Add("Максимум:" + Str(max)) lstMatrix.Items.Add("Строка:" + Str(imax)) lstMatrix.Items.Add("Столбец:" + Str(jmax)) Полный текст программы представлен в приложении 38. Пример работы программы приведен на рис. 53. Рис. 53. Пример работы программы поиска максимального элемента в прямоугольной матрице |