- •7. Одномерные массивы 114
- •8. Обработка двумерных массивов (матриц) 162
- •9. Обработка строк 183
- •10. Тип данных, определенный пользователем. Структуры 214
- •11. Использование подпрограмм 228
- •Приложение 52 310 Список литературы 313 Введение
- •1. Этапы создания Windows-приложения
- •2. Среда Visual Basic 2005
- •2.1. Структура среды Visual Basic 2005
- •2.2. Создание нового проекта
- •2.3. Сохранение проекта
- •2.4. Выполнение приложения
- •2.5. Основные команды среды Visual Basic 2005
- •2.6. Методы тестирования
- •2.7. Отладка приложений в среде vb
- •3. Разработка интерфейса в среде vb. Основные элементы управления
- •3.1. Метка
- •3.2. Текстовое поле
- •3.3. Кнопка
- •3.4. Окно списка
- •3.5. Выравнивание положения элементов управления
- •4. Программа линейной структуры
- •4.1. Понятие переменной
- •4.2. Типы данных
- •4.3. Объявление переменных
- •4.4. Оператор присваивания
- •Оператор присваивания работает справа налево.
- •4.5. Константы
- •4.6. Арифметические операции
- •4.7. Математические функции
- •4.8. Арифметическое выражение
- •4.9. Окно ввода (InputBox)
- •4.10. Окно вывода сообщения (MsgBox)
- •4.11. Пример. Вычисление площади треугольника
- •4.12. Пример. Нахождение цифр числа
- •5. Организация ветвлений
- •5.1. Логические константы и переменные
- •5.2. Операции сравнения
- •5.3. Логические операции
- •5.4. Логическое выражение
- •5.5. Условный оператор
- •5.6. Функция iIf
- •5.7. Оператор множественного ветвления ElseIf
- •5.8. Оператор выбора Select Case
- •5.9. Оператор безусловного перехода GoTo
- •5.10. Пример. Решение линейного уравнения
- •5.11. Пример. Программа-калькулятор
- •6. Программирование повторений
- •6.1. Цикл со счетчиком
- •6.1.1. Табуляция функции
- •6.1.2. Вычисление факториала
- •6.1.3. Обработка совокупности чисел с известным числом элементов
- •6.2. Цикл с условием
- •6.2.1. Ввод с проверкой
- •6.2.2. Обработка совокупности чисел с неизвестным числом элементов
- •6.2.3. Вычисление суммы ряда по общей формуле
- •Вычисление суммы ряда с использованием рекуррентного соотношения
- •6.2.5. Вычисление произведения ряда
- •Решение нелинейных уравнений методом простой итерации
- •7. Одномерные массивы
- •Массивы всегда обрабатываются в цикле.
- •7.1. Ввод массива
- •Вывод массива в окно списка и в текстовое поле
- •7.3. Вычисление суммы и произведения элементов массива
- •7.4. Определение количества элементов массива, удовлетворяющих некоторому условию
- •7.5. Вычисление среднего арифметического и среднего геометрического элементов массива, удовлетворяющих некоторому условию
- •7.6. Нахождение максимального элемента массива
- •7.7. Нахождение минимального элемента массива, удовлетворяющего некоторому условию
- •7.8. Поиск первого элемента массива, удовлетворяющего некоторому условию
- •7.9. Поиск последнего элемента массива, удовлетворяющего некоторому условию
- •7.10. Замена одного элемента массива
- •7.11. Замена всех элементов массива, удовлетворяющих некоторому условию
- •7.12. Перестановка местами двух элементов массива
- •7.13. Формирование нового массива из некоторых элементов исходного массива
- •7.14. Проверка совпадения всех элементов массива
- •7.15. Проверка упорядоченности всех элементов массива
- •7.16. Сортировка массива методом пузырька
- •7.17. Линейная сортировка массива (методом поиска минимума)
- •Никогда нельзя использовать одновременно оба способа перестановки элементов массива.
- •8. Обработка двумерных массивов (матриц)
- •8.1. Ввод прямоугольной матрицы
- •8.2. Вывод прямоугольной матрицы в окно списка и в текстовое поле
- •8.3. Поиск максимального элемента матрицы
- •8.4. Обработка матрицы по строкам
- •8.5. Обработка матрицы по столбцам
- •8.6. Обработка квадратных матриц
- •Для обработки элементов, стоящих на любой диагонали, достаточно одного цикла. Для обработки элементов, принадлежащих к одному из треугольников, необходимо использовать вложенные циклы.
- •9. Обработка строк
- •9.1. Основные функции обработки строк
- •9.2. Посимвольная обработка строки
- •9.3. Формирование массива слов строки
- •9.4. Формирование строки из массива слов
- •9.5. Слова-палиндромы
- •9.6. Выделение чисел из строки
- •9.7. Сравнение строк
- •9.8. Обработка многострочного текста
- •10. Тип данных, определенный пользователем. Структуры
- •10.1. Описание структуры. Область видимости. Понятие метода
- •10.2. Оператор With
- •10.3. Ввод массива структур
- •10.4. Вывод массива структур
- •10.5. Поиск в массиве структур
- •10.6. Формирование нового массива из некоторых элементов исходного массива
- •10.7. Сортировка массива структур
- •11. Использование подпрограмм
- •11.1. Определение процедуры и функции. Описание процедуры и функции
- •11.2. Передача параметров по ссылке и по значению
- •11.3. Формальные параметры и фактические переменные
- •11.4. Локальные и глобальные переменные
- •11.5. Static-переменные
- •Приложение 1
- •Приложение 2
- •Приложение 3
- •Приложение 4
- •Приложение 5
- •Приложение 6
- •Приложение 7
- •Приложение 8
- •Приложение 9
- •Приложение 10
- •Приложение 11
- •Приложение 12
- •Приложение 13
- •Приложение 14
- •Приложение 15
- •Приложение 16
- •Приложение 17
- •Приложение 18
- •Приложение 19
- •Приложение 20
- •Приложение 21
- •Приложение 22
- •Приложение 23
- •Приложение 24
- •Приложение 25
- •Приложение 26
- •Приложение 27
- •Приложение 28
- •Приложение 29
- •Приложение 30
- •Приложение 31
- •Приложение 32
- •Приложение 33
- •Приложение 34
- •Приложение 35
- •Приложение 36
- •Приложение 37
- •Приложение 38
- •Приложение 39
- •Приложение 40
- •Приложение 41
- •Приложение 42
- •Приложение 43
- •Приложение 44
- •Приложение 45
- •Приложение 46
- •Приложение 47
- •Приложение 48
- •Приложение 49
- •Приложение 50
- •Приложение 51
- •Приложение 52
- •Список литературы
8.5. Обработка матрицы по столбцам
Обработка матрицы по столбцам практически ничем не отличается от обработки матрицы по строкам. Единственное различие – в порядке вложенных циклов. При обработке матрицы по столбцам внешний цикл организуют по столбцам, а внутренний – по строкам. В качестве примера рассмотрим задачу поиска минимального элемента в каждом столбце матрицы. Полученные результаты запишем в одномерный массив, который затем выведем в окно списка.
Решение задачи начнем с описания переменных. Нам потребуется переменная для хранения минимального значения в отдельном столбце матрицы. Очевидно, что она будет иметь такой же тип данных, что и элементы исходной матрицы.
Dim min As Integer
Так как все найденные значения будут записываться в одномерный массив, то нам необходимо его объявить.
Dim b() As Integer
Сразу зададим размер результирующего массива. Поскольку мы ищем минимум в каждом столбце по отдельности, то количество результатов всегда будет совпадать с количеством столбцов матрицы. Таким образом, номер последнего элемента в массиве результатов будет равен номеру последнего столбца матрицы.
ReDim b(n)
Организуем вложенные циклы. Так как по условию задачи требуется обработать каждый столбец по отдельности, то внешний цикл будет идти по столбцам матрицы.
For j = 0 To n
Каждый столбец матрицы мы будем рассматривать как одномерный массив. Поэтому задача поиска минимального элемента в одном столбце матрицы решается точно также как задача поиска минимального элемента в одномерном массиве. Поиск начинается с нулевого элемента столбца. Этот элемент находится в нулевой строке и j-м столбце, гдеj– счетчик внешнего цикла.
min = a(0, j)
Обрабатываем все остальные элементы j-го столбца. Для этого мы должны пройти по всем строкам, входящим в этот столбец. Следовательно, внутренний цикл организуем по стокам. Чтобы не сравнивать нулевой элемент столбца с самим собой внутренний цикл начнем с первой строки.
For i = 1 To m
Анализируем очередной элемент столбца.
If a(i, j) < min Then
Если его значение меньше ранее найденного минимума, значит, значение минимума надо обновить, записав в соответствующую переменную значение текущего элемента матрицы.
min = a(i, j)
End If
Next
После завершения внутреннего цикла в переменной minхранится значение минимального элемента вj-м столбце. Это значение мы должны записать в результирующий массив наj-ю позицию.
b(j) = min
Next
После завершения вложенных циклов результирующий массив полностью сформирован, и мы должны вывести его в окно списка. Чтобы зрительно отделить исходные данные от полученных результатов выведем горизонтальную черту.
lstMatrix.Items.Add("-----------------------------")
Выводим поясняющий заголовок. В первой колонке мы будем печатать номер столбца, а во втором – значение минимального элемента в этом столбце. Константа vbTabпозволит нам организовать вывод в две колонки.
lstMatrix.Items.Add("Столбец" + vbTab + "Минимум")
Организуем цикл для вывода массива b(). Так как количество элементов в этом массиве совпадает с количеством столбцов в матрице, то значение счетчика будет изменяться в диапазоне от 0 доn, гдеn– номер последнего столбца матрицы.
For i = 0 To n
На каждом шаге цикла выводим номер элемента массива (он же – номер столбца матрицы) и значение элемента массива – это минимальный элемент в данном столбце матрицы.
lstMatrix.Items.Add(Str(i) + vbTab + Str(b(i)))
Next
Полный текст программы представлен в приложении 40. Пример работы программы приведен на рис. 55.
Рис. 55. Пример работы программы поиска минимального элемента в каждом столбце прямоугольной матрицы