Примерами подобного рода задач могут служить поиск первого отрицательного, первого положительного и любого первого элемента, отвечающего некоторому условию, а также поиск единственного или определенного количества элементов, равных некоторому конкретному значению. Особенность задач этого класса в том, что нет необходимости просматривать весь массив. Просмотр можно закончить сразу, как только требуемый элемент будет найден. Но в худшем случае для поиска элемента требуется просмотреть весь массив, причем нужного элемента в нем может не оказаться.
Существует несколько методов поиска. Самый простой заключается в последовательном просмотре элементов массива. Если массив не очень большой, затраты времени линейного поиска не столь заметны. Но при солидных объемах информации время поиска становится критичным. Поэтому существуют методы, позволяющие уменьшить время поиска, например двоичный поиск, который применяется только, если элементы массива сортированы по возрастанию или убыванию.
Чаще всего при программировании поисковых задач используют циклы-до или циклы-пока, в которых условие выхода формируется из двух условий: первое условие — пока искомый элемент не найден, а второе — пока есть элементы массива. После выхода из цикла осуществляют проверку, по какому из условий произошел выход.
Обработка матриц (двумерных массивов)
Двумерный массив можно описать как одномерный массив, каждый элемент которого тоже является одномерным массивом, состоящим из одинакового числа однотипных элементов порядкового типа. Например:
var x: array[1..3] of array[1..5] of integer;
или
var x: array[1..3,1..5] of integer;
или
type t1 = array[1..5] of integer;
t2 = array[1..3] of t1;
var x: t2;
или
const m=3; n=5;
type matr = array[1..m,1..n] of integer;
var x: matr;
Переменные с 2-мя индексами удобны для работы с таблицами. Квадратные или прямоугольные таблицы часто называют матрицами.
Доступ к элементу матрицы А, лежащему в i-й строке и j-м столбце, записывается А[i] [j] или лучше A[i,j]. Обработка матриц также выполняется в циклах.
Использование приемов обработки одномерных массивов.
При решении некоторых задач обработки многомерных массивов могут быть выделены подзадачи, при программировании которых можно использовать приемы обработки одномерных массивов.
Состав задания.
Задание 1. Пример программы обработки одномерных массивов:
1.Конструирование формы:
При выполнении задания на форме были размещены следующие компоненты:
-TLabel– используется для создания комментариев. Для этого использовалось свойство компонента Caption, которое имеет строковый тип.
-TButton – кнопка, при нажатии которой производятся вычисления. Код вычислений прописан в методе OnClick, который срабатывает при нажатии кнопки во время исполнения программы. Комментарий на кнопке прописывается в свойстве кнопки Caption.
-TListBox – используется для вывода результатов программы.
2.Условие:
Дан массив xi={3,5;7,2;4,5;2,1;7,6;9,3}. Вычислить .
Найти max yi и его номер k.
3.Форма:
4.Программа:
5.Результат:
Задание 2. Пример программы на программирование с использованием функций и процедур
1.Конструирование формы:
При выполнении задания на форме были размещены следующие компоненты:
TLabel – используется для создания комментариев. Для этого использовалось свойство компонента Caption, которое имеет строковый тип.
TButton – кнопка, при нажатии которой производятся вычисления. Код вычислений прописан в методе OnClick, который срабатывает при нажатии кнопки во время исполнения программы. Комментарий на кнопке прописывается в свойстве кнопки Caption.
TListBox – используется для вывода результатов программы.
Условие.
Задана последовательность чисел А={A1,A2,…,A6}. Выбрать из них числа, принадлежащие отрезку [x,y]. Из выбранных чисел образовать массив. Решение оформить в виде подпрограммы. Исходные данные: А={-4.1,-1,1.2,3,5,0.75}. X=-2.5, Y=1.2.
3.Форма:
Программа.
5.Результат:
Задание 3. Пример программы обработки матриц (двумерных массивов):
1.Конструирование формы:
При выполнении задания на форме были размещены следующие компоненты:
-TLabel – используется для создания комментариев. Для этого использовалось свойство компонента Caption, которое имеет строковый тип.
-TButton – кнопка, при нажатии которой производятся вычисления. Код вычислений прописан в методе OnClick, который срабатывает при нажатии кнопки во время исполнения программы. Комментарий на кнопке прописывается в свойстве кнопки Caption.
-TStringGrid – данный компонент был использован для вывода исходной матрицы и модифицированной матрицы. Для вывода элементов матриц использовалось свойство компонента Cells (ячейка), которое характеризуется индексами размещения в столбце и в строке. Количество строк и столбцов прописываются в свойствах компонента RowCount и ColCount. А для перевода числовых значений в строку – функция IntToStr. Задаём следующие свойства:
o ColCount – число столбцов (в данной работе 6)
o RowCount – число строк (в работе 5)
o FixedCols = 0 — фиксированное число столбцов
o FixedRows = 0 – фиксированное число строк
-StringGrid1 – здесь записывается исходная матрица. В свойствах Options установить свойству редактирования go Editing значение true.
-StringGrid2 – здесь записывается полученная матрица.
-TGroupBox – компонент, предназначенный для группировки внутри себя других компонентов. Заголовок компонента прописывается в его свойстве Caption.
2.Условие:
Определить наибольшее значение среди элементов, расположенных выше главной диагонали матрицы A(5,6). Напечатать новую матрицу A, в которой все элементы выше главной диагонали заменены нулями, кроме наибольшего элемента. Элементы исходной матрицы выбрать самостоятельно.
3.Форма:
4.Программа:
5.Результат:
Индивидуальные задания
Одномерные массивы
1. Вывести элементы массива X(15), которые меньше последнего, и их число.
2. Даны массивы A(13), B(13). Составить массив С по правилу: С1=А1+В13, С2=А2+В12, …, С13=А13+В1. Вывести А, В и С.
3. Дан массив A(15). Вывести сумму элементов массива, если она положительна, иначе вывести сам массив.
4. Все отрицательные элементы массива В(25) заменить нулями. Вывести новый массив.
5. Дан массив Y(30). Все его четные компоненты нужно удвоить, а нечетные заменить нулями.
6. Составить программы, которые по данной последовательности действительных чисел a1, …, a20позволяют вычислить:
а) a1a11+a2a12+…+a10a20,
б) a1a20+a2a19+…+a10a11.
7. Из двух массивов A(12) и B(12) образовать третий массив по правилу: С1=А1, С2=В1, С3=А2, С4=В2, С5=А3, С6=В3, …, С23=А12, С24=В12. Вывести А, В и С.
Матрицы
1. Найти сумму всех элементов матрицы A(7,8).
2. Найти произведение всех элементов матрицы В(5,6).
3. В матрице М(7,7) найти сумму элементов главной диагонали.
4. Найти среднее арифметическое элементов каждого столбца матрицы К(8,6).
5. Найти сумму квадратов всех элементов матрицы А(8,5), стоящих в нечетных строках матрицы.
6. Найти наименьший элемент матрицы А(6,10) и номер его строки и столбца.
7. Найти наибольший элемент матрицы А(7,8) и номер его строки и столбца.
Статьи к прочтению:
Поиск элементов массива с заданными свойствами
Похожие статьи:
-
Элемент управления datagridview
При работе с двухмерными массивами ввод и вывод информации на экран удобно организовывать в виде таблиц. Элемент управления DataGridView может быть…
-
Массивы и кортежи • Простые массивы • Многомерные массивы • Зубчатые массивы • Класс Array • Массивы в качестве параметров • Перечисления • Кортежи •…