Тема. Поиск элементов массива с заданными свойствами
Примеры: 1 Определение количества элементов с заданным свойством | |
Определить количество положительных элементов массива А. |
К: = 0; {Счетчик элементов с заданным свойством} For i: = 1 to N do If A [i]> 0 Then К = K + 1; |
2. Определение номера первого элемента массива, значение которого соответствует условию | |
Вариант алгоритма решения задачи:
|
i: = 0; If i <= N Then Edit1.Text: = 'i =' + IntToStr (i) |
Пример 2. Формирование массива случайными числами и вывода их в текстовые поля TListBox и TMemo.
Генерируются 12 случайных чисел из диапазона от 0 до 6. Из этих цифр формируется массив, значения элементов которого выводятся в поле объекта ListBox1, а в поле объекта Memo1 выводятся все элементы этого массива, кроме элементов, значения которых равны 6.
Интерфейс проекта Итог:
|
Программный код проекта procedure TForm1.Button1Click(Sender: TObject); for i:=1 to 12 do {цикл для вывода элементов преобразованного end; procedure TForm1.Button2Click(Sender: TObject); |
Пример 3. Дана последовательность из n целых чисел (n ≤ 100). Определить количество четных чисел, которые имеют парные индексы.
1. Создайте новый проект. Измените значение свойства Caption формы, разместите на форме компоненты Edit, Button, Label, ListBox и настройте их свойства в соответствии с рисунком.
2. Для элементов используем массив. Поскольку количество элементов последовательности n≤100, опишите массив:
a: array [1..100] of Integer;
3.Опишите глобальные переменные: n - количество элементов последовательности; k - искомое количество четных чисел, имеющих четные индексы; i - индекс текущего элемента массива.
4. Создайте процедуру обработки события OnClick для кнопки Заполнить массив. Запишите операторы для ввода значения n и заполнения массива случайными числами:
5. Создайте процедуру обработки события OnClick для кнопки Вычислить k. В цикле перебираем элементы массива a; если a [i] соответствует условию, увеличиваем значение k на 1.
Вариант 1 Интерфейс проекта
Итог: |
Программный код var procedure TForm1.Button1Click(Sender: TObject); procedure TForm1.Button2Click(Sender: TObject); procedure TForm1.Button3Click(Sender: TObject); |
Интерфейс проекта
итог: |
Вариант 2 procedure TForm1.Button2Click(Sender: TObject); procedure TForm1.Button3Click(Sender: TObject); (изменение в процедуре procedure TForm1.Button3Click(Sender: TObject) |
Пример 4. Определить, сколько раз заданное действительное число встречается среди значений элементов табличной величины.
Очевидно, что для решения этой задачи нужно пересмотреть последовательно значения всех элементов табличной величины, сравнить каждое из них с заданным числом, и если некоторое из них равна этому числу, то увеличить счетчик таких элементов на 1.
procedure TForm1.Button1Click(Sender: TObject); |
|
Пример 5. Определить, есть ли заданное действительное число среди значений элементов данной табличной величины.
Эту задачу можно было бы решить аналогично предыдущей: определить, сколько элементов табличной величины равны заданному числу, и если это количество равен 0 то заданного числа среди значений элементов табличной величины в противном случае - заданное число среди значений элементов табличной величины есть. Но:
-
такой метод решения этой задачи является нерациональным;
-
представьте себе, что заданное число является значением уже первого элемента табличной величины; тогда все остальные ее элементы просматривать уже не нужно, и это значительно экономит время решения этой задачи, особенно если количество элементов табличной величины велика.
Для реализации рационального метода решения этой задачи используем переменную логического типа f и пусть ее значение:
Перед началом просмотра значений элементов табличной величины присвоим переменной f значение false, ведь заданное число в табличной величине пока не нашлось. Сравниваем в цикле последовательно значения элементов табличной величины с заданным числом, и если один из них равен заданному числу, то изменим значение переменной f на true и прервем выполнение цикла командой break (англ. Break - прерывать). Вывод реализуем в зависимости от значения переменной f. |
Программный код проекта procedure TForm1.Button1Click(Sender: TObject); |
|
begin for i:= 1 to 10 do //в цикле последовательно сравниваем значение элементов массива с искомым числом |
Итоги
|
Задачи на определение суммы (произведения) элементов массива