Одна из важных невычислительных задач — поиск данного значения среди элементов массива. Такой поиск называется также поиском по ключу. На практике поиск осуществляется в упорядоченном массиве, причем имеются различные алгоритмы поиска. В данном примере осуществим поиск путем сплошного перебора. Если элемент найден, то напечатаем его номер, если нет, то выдадим соответствующее сообщение. Существенным является то, какой из одинаковых элементов массива, равных данному, нас интересует: первый встретившийся при поиске или последний. В этом примере будем искать первый. Поиск осуществляется в цикле, и как только элемент найден, надо выйти из цикла. Для досрочного выхода из цикла forиспользуем оператор goto.Если досрочный выход не произойдет, то значит, элемент, равный данному, в массиве отсутствует. В таком случае выдача сообщения об отсутствии элемента происходит сразу после цикла поиска. Следовательно, чтобы обойти печать номера элемента, надо использовать еще один оператор gotoи еще одну метку в программе.
Программа поиска данного элемента в массиве:
program E15;
label 1 , 2;
const n = 7;
var a : array [1 .. n ] of real; x : real; i : integer;
Begin
writeln('введите элементы массивов');
fori: = 1 to n do
read (a [ i ]);
writeln;
write('введите число для поиска в массиве, х = ');
Если искать не первый по порядку равный ключу элемент, а последний, то надо использовать цикл обратного пересчета: fori: =n downto 1 do.
Вопросы и задания
1. Чем отличается массив от файла?
2. Для чего необходимо описание массива?
3. Что надо сделать, чтобы начать решать на компьютере задачу, формулировка которой начинается со слов: «Дано п чисел...»?
4. Может ли массив содержать разнородные данные?
5. Можно ли в примере программы Е12 ограничиться одним оператором цикла?
6. Что надо изменить в программе Е13, чтобы осуществлялся поиск не наибольшего, а наименьшего элемента массива?
7. Какие изменения в программу Е13 надо внести, чтобы одновременно со значением наибольшего числа определялся его порядковый номер?
8. Объясните работу двойного цикла в программе Е14.
9. Измените программу Е15 так, чтобы вместо цикла пересчетпри поиске элемента использовался цикл пока.Примените переменную-флажок, которая до цикла имела бы нулевое значение, а в случае нахождения необходимого элемента изменила бы значение на 1. Как при этом обойтись без операторов goto?
10. В заданной последовательности целых чисел определите количество и сумму элементов, кратных 10.
11. Дано и чисел. Найдите сумму чисел, больших заданного числа а.
12. В заданном массиве замените нулем наибольший элемент.
13. Найдите полупроизведение всех положительных элементов массива.
14. Найдите сумму квадратов неотрицательных элементов и количество положительных чисел в заданном целочисленном одномерном массиве.
15. В заданной вещественной последовательности поменяйте местами первый и наименьший элементы.
16. Дано п чисел. Замените все отрицательные числа их модулями.
17. Вычислите среднее арифметическое наибольшего и наименьшего из n чисел.