Сумма значений элементов массива
Подсчёт элементов массива, удовлетворяющих условию
Поиск максимального элемента в массиве
Практическая работа № 22 «Алгоритмы обработки массивов»
Практическая работа № 23 «Сумма значений элементов массива»
Практическая работа № 24 «Подсчёт элементов массива по условию»
Практическая работа № 25 «Поиск максимального элемента»
Во многих задачах нужно найти в массиве все элементы, удовлетворяющие заданному условию, и как-то их обработать, например подсчитать их количество. Для подсчёта элементов используется переменная-счётчик, назовём её count. Перед началом цикла в счётчик записывается ноль (ни одного нужного элемента не найдено). Если на очередном шаге цикла найден новый элемент, значение счётчика увеличивается на единицу.
Подсчитаем количество чётных элементов массива (элементов с чётными значениями).
Запишите условие, которое означает, что переменная х чётная. Предложите два равносильных варианта такого условия.
Условие «элемент A[i] чётный» можно сформулировать иначе: «остаток от деления A[i] на 2 равен нулю»:
если mod (А [ i ] , 2)=0 то if A[i] mod 2=0 then
... | увеличить счётчик ... { увеличить счётчик }
все
Теперь можно написать полный цикл:
count:=0 count:=0;
нц для i от 1 до N for i:=1 to N do
если mod (A[i], 2)=0 то if A[i] mod 2=0 then
count:=count+1 count:=count+1;
все write(count) ;
КЦ
вывод count
Для массива на рис. 3.9 выполните ручную прокрутку этой программы и определите, какое значение будет выведено.
Теперь усложним задачу. В массиве записан рост каждого члена баскетбольной команды в сантиметрах. Требуется найти средний рост игроков, которые выше 180 см (предполагаем, что хотя бы один такой игрок есть). Средний рост — это среднее арифметическое, т. е. «суммарный рост» интересующих нас игроков (тех, которые выше 180 см), поделённый на их количество.
Найдите ошибку в программе:
sum:=0 sum:=0;
нц для i от 1 до N for i:=l to N do
если A[i]>180 то if A[i]>180 then
sum:=sum+A[i] sum:=sum+A[i];
все write(sum/N);
КЦ
вывод sum/N
К какому типу ошибок относится эта ошибка?
Для решения задачи нам нужно считать и сумму, и количество элементов массива, значения которых больше 180:
count:=0 count:=0;
sum:=0 sum:=0;
нц для i от 1 до N for i:=l to N do
если A[i]>180 то if A[i]>180 then begin
count:=count+1 count:=count+1;
sum:=sum+A[i] sum:=sum+A[i]
все end;
кц write(sum/count);
вывод sum/count
Обратите внимание, что в теле условного оператора находятся две команды (увеличение счётчика и увеличение суммы), поэтому в программе на языке Паскаль они заключаются в операторные скобки — служебные слова begin и end.
Следующая страница Поиск максимального элемента в массиве