§ 22. Алгоритмы обработки массивов | Подсчёт элемента массива, удовлетворяющего условию (68 часов в уч. год)

Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, углубленный уровень)


Уроки 44 - 46
§22. Алгоритмы обработки массивов



Содержание урока

Сумма значений элементов массива

Подсчёт элементов массива, удовлетворяющих условию

Поиск максимального элемента в массиве

Выводы. Интеллект-карта

Вопросы и задания

Практическая работа № 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.

Следующая страница Поиск максимального элемента в массиве



Cкачать материалы урока







Наверх