- •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
- •Список литературы
7.14. Проверка совпадения всех элементов массива
Задача проверки совпадения всех элементов массива решается двумя разными способами. Они оба используют тот факт, что если все элементы массива одинаковые, то они обязательно будут совпадать с нулевым элементом массива.
Первый способ предлагает определить, если ли в массиве хотя бы один элемент, отличающийся от нулевого. Если да, значит, в не все элементы массива совпадают. Для этого последовательно анализируются все элементы массива. Если какой-нибудь элемент отличается от нулевого, то делается вывод, что в массиве есть различные элементы и цикл прерывается.
Второй способ предлагает определить количество элементов, совпадающих с нулевым. Если это количество совпадет с общим количеством элементов в массиве, значит, массив состоит из одинаковых элементов.
Рассмотрим особенности программной реализации обоих алгоритмов.
Первый способ.
Для решения задач нам потребуется логическая переменная, в которой будет храниться результат проверки массива.
Dim test As Boolean
Изначально предполагаем, что все элементы в массиве одинаковые. Тогда результатом проверки будет Истина (True).
test = True
Анализируем все элементы исходного массива, кроме нулевого. Очевидно, что нулевой элемент всегда будет совпадать с самим собой. Поэтому анализ элементов массива начинаем с элемента, имеющего номер 1.
For i = 1 To n
Сравниваем очередной элемент массива с нулевым.
If a(i) <> a(0) Then
Если они не совпадают, значит, в массиве есть различные элементы. Поэтому в результирующую переменную записываем значение Ложь (False).
test = False
И прерываем выполнение цикла, так как решение задачи уже получено.
Exit For
End If
Next
После завершения цикла выводим полученные результаты. Сначала печатаем горизонтальную черту, чтобы зрительно отделить исходные данные от результатов.
lstA.Items.Add("-------------------------------")
Затем анализируем полученный ответ. Обратите внимание на формулировку логического выражения в условном операторе. Оно записано в виде логической переменной5. При выполнении программы вместо логической переменной будет подставлено ее значение. Если оно будет равно Истине (True), то выполнятся операторы, стоящие в частиThen. Если логическая переменнаяtestбудет иметь значение Ложь (False), то выполнятся операторы, стоящие в частиElse.
If test Then
Если в переменной testзаписано значение Истина (True), значит, все элементы массива одинаковые. Выводим соответствующее сообщение.
lstA.Items.Add("Все элементы одинаковые")
Else
В противном случае, если в переменной testхранится значение Ложь (False), значит, в массиве есть различные элементы.
lstA.Items.Add("Есть несовпадающие элементы")
End If
Второй способ.
В этом способ вместо логической переменной используется целочисленная переменная, в которой хранится количество элементов массива, равных нулевому элементу.
Dim kol As Integer
До начала анализа количество совпадений полагаем равным нулю.
kol = 0
Организуем цикл для проверки все элементов массива.
For i = 0 To n
Анализируем текущий элемент массива.
If a(i) = a(0) Then
Если он совпадает с нулевым элементом массива, то увеличиваем количество совпадений на единицу.
kol += 1
End If
Next
После завершения цикла выводим полученные результаты. Сначала печатаем горизонтальную черту, чтобы зрительно отделить исходные данные от результатов.
lstA.Items.Add("-------------------------------")
Затем анализируем найденное количество совпадений с нулевым элементом массива.
If kol = n + 1 Then
Если полученное значение на единицу превышает номер последнего элемента массива (то есть равно количеству элементов), значит, все элементы массива совпадают с нулевым. Следовательно, массив состоит из одинаковых элементов.
lstA.Items.Add("Все элементы одинаковые")
Else
В противном случае в массиве есть несовпадающие элементы. И мы выводим соответствующее сообщение.
lstA.Items.Add("Есть несовпадающие элементы")
End If
Полный текст программы представлен в приложении 33. Примеры работы программы при различных исходных данных приведены на рис. 48.
Рис. 48. Примеры работы программы, проверяющей, совпадают ли все элементы массива