s:=0; {Подсчет элементов равных заданному например – 5}
for i:=1 to 10 do
if a[i]=5 then s:=s+1;
Пусть мы имеем одномерный массив с оценками 10 учеников по информатике. Требуется посчитать, сколько из них имеют оценку 5.
По заведенной у нас традиции, рассмотрим алгоритм построчно:
s:=0;
Начальное значение количества отличников по информатике устанавливаем в 0.
for i:=1 to 10 do {Для I от 1 до 10 делать}
Обратите внимание в программе SUM_1MAS что именно делать (читать элемент с клавиатуры или выводить его на экран) мы писали в той же самой строке. А в этот раз - в следующей и поэтому в конце этой строки НЕ СТАВИТСЯ символ ";" ! Еще очень важно обратить внимание на то, что следующая строка пишется со сдвигом вправо на 2 позиции относительно предыдущей строки. Таким образом, мы сообщаем себе и всем, кто потом будет читать нашу программу, что эта строка не сама по себе, а является продолжением предыдущей строки.
if a[i]=5 then s:=s+1;
Если A[i] равно 5 то увеличить значение S на 1.
Более подробно это можно прочитать следующим образом: если i-тый элемент массива A равен 5, то новое значение переменной S надо сформировать, сложив старое значение S с 1. Или, возвращаясь к нашей задаче об отличниках, если очередной ученик имеет оценку 5, то его надо посчитать. Ведь увеличение на 1 это и есть подсчет.
А как посчитать количество троечников?
s:=0;
for i:=1 to 10 do
if a[i]=3 then s:=s+1;
А как посчитать количество хорошистов и отличников?
s:=0;
for i:=1 to 10 do
if a[i]>=4 then s:=s+1;
вообще в операторе IF (Если) можно использовать следующие знаки сравнения:
= равно
> больше
< меньше
>= больше либо равно
<= меньше либо равно
<> не равно
Например, сколько человек имеют в качестве оценки не 5?
s:=0;
for i:=1 to 10 do
if a[i]<>5 then s:=s+1;
В операторе IF можно писать и более сложные условия, используя слова AND (И), OR (ИЛИ) и скобки.
Например, пусть A[i] это массив оценок по информатике, а B[i] - массив оценок по математике. Как посчитать количество учеников, которые имеют оценку 5 и по информатике и по математике ?
s:=0;
for i:=1 to 10 do
if (a[i]=5) and (b[i]=5) then s:=s+1;
А как посчитать количество учеников, которые имеют оценку 5 хотя бы по одному из предметов – математика или информатика ?
s:=0;
for i:=1 to 10 do
if (a[i]=5) or (b[i]=5) then s:=s+1;
Уверен, что теперь Вы можете решить любую задачу, в которой нужно посчитать количество элементов в одномерном массиве, обладающих каким-то свойством. Например, задачи 1 и 5 из приведенных в пункте 1.1.5.
А придумать задачи, которые решаются подсчетом элементов, обладающих заданным свойством, сможете? Попробуйте!