
- •Простейшие алгоритмы на одномерном массиве:
- •Подсчет элементов, обладающих заданным свойством
- •Поиск максимального и минимального элементов
- •Поиск элементов, обладающих заданным свойством
- •Сортировка элементов одномерного массива
- •Методические указания по решению задач 1-5,7,9,12,13 из пункта 1.1.5
Простейшие алгоритмы на одномерном массиве:
...
s:=0; { Подсчет элементов }
for i:=1 to 10 do { равных данному ( 5 ) }
if a[i]=5 then s :=s+1;
...
s:=a[1]; { Поиск }
for i:=2 to 10 do { максимального элемента }
if a[i]>s then s:=a[i];
...
s:=a[1]; { Поиск }
for i:=2 to 10 do { минимального элемента }
if a[i]<s then s:=a[i];
...
i:=1; { Поиск элементов }
while (i<=10) and (a[i]<>3) do i:=i+1; { равных данному (3) }
if i>10
then writeln('3 нет ')
else writeln('первая 3 имеет индекс ',i);
...
Давайте рассмотрим их по порядку
Подсчет элементов, обладающих заданным свойством
s:=0; { Подсчет элементов }
for i:=1 to 10 do { равных данному ( 5 ) }
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.
А придумать задачи, которые решаются подсчетом элементов, обладающих заданным свойством, сможете? Попробуйте!