Определить индексы элементов массива, значение которых лежит в указанном пределе
Задача
В массиве определить индексы элементов, значение которых не меньше заданного минимума и не больше заданного максимума.
Это очень простая задача, если не требуется сохранять индексы элементов, а просто вывести их на экран. Ее можно немного усложнить, если задать условие сохранения в программе индексов найденных элементов и определение их общего количества. В таком случае потребуется ввести еще один массив.
Решение
Описание переменных:
arr - исследуемый массив;
id - массив индексов элементов массива arr, значение которых лежит в определенных пределах;
min, max - нижняя и верхняя граница диапазона;
m - количество найденных элементов.
Алгоритм решения задачи:
- генерируем массив случайных чисел и выводим его на экран;
- запрашиваем у пользователя нижнюю и верхнюю границы поиска;
- перебирая массив, если значение очередного элемента больше или равно минимуму и меньше или равно максимуму, то помещаем его индекс в массив id;
- выводим общее количество найденных элементов и их индексы в массиве arr, сохраненные в массиве id.
Программа на языке Паскаль:
const n = 100; var arr: array[1..n] of integer; id: array[1..n] of byte; min, max: integer; i, m: byte; begin randomize; for i:=1 to n do begin arr[i] := random(200) + 1; write(arr[i]:4); if i mod 20 = 0 then writeln; // new line end; write('Min: '); readln(min); write('Max: '); readln(max); m := 0; for i:=1 to n do if (arr[i] >= min) and (arr[i] <= max) then begin m := m + 1; id[m] := i; end; writeln('Total: ', m); write('Id: '); for i:=1 to m do write(id[i],' '); writeln; end.
Примеры выполнения кода:
71 163 45 120 39 105 56 149 15 193 163 83 84 175 186 44 2 196 22 102 156 92 58 180 6 154 26 104 142 184 157 121 103 179 188 36 188 125 127 172 58 62 183 135 28 35 9 87 157 51 132 56 96 114 84 70 30 182 109 146 139 173 37 177 91 108 23 84 95 13 24 6 1 155 80 194 18 104 139 43 152 134 195 101 104 200 179 82 156 114 42 7 164 97 180 64 19 151 82 17 Min: 60 Max: 80 Total: 5 Id: 1 42 56 75 96
92 11 44 110 19 27 196 72 135 82 119 150 157 91 4 42 147 22 139 168 187 131 15 151 183 175 95 109 130 172 71 96 125 96 166 29 87 126 30 17 15 31 137 164 149 33 48 194 55 68 193 17 14 38 152 197 184 166 44 96 194 175 154 56 63 24 103 137 166 90 65 95 31 107 61 51 153 171 119 97 46 67 171 46 197 126 100 10 193 184 60 160 155 134 13 168 168 138 15 165 Min: 40 Max: 120 Total: 35 Id: 1 3 4 8 10 11 14 16 27 28 31 32 34 37 47 49 50 59 60 64 65 67 70 71 72 74 75 76 79 80 81 82 84 87 91