
- •Простейшие алгоритмы на одномерном массиве:
- •Подсчет элементов, обладающих заданным свойством
- •Поиск максимального и минимального элементов
- •Поиск элементов, обладающих заданным свойством
- •Сортировка элементов одномерного массива
- •Методические указания по решению задач 1-5,7,9,12,13 из пункта 1.1.5
Сортировка элементов одномерного массива
for j:=1 to 9 do
begin
s:=a[j]; k:=j; { Поиск }
for i:=j+1 to 10 do { минимального }
if a[i]<s { элемента }
then begin s:=a[i]; k:=i end;
a[k]:=a[j]; { Вынос "наверх" }
a[j]:=s; { минимального элемента }
end;
Предположим, что массив A содержит значения роста 10 учеников в сантиметрах. Требуется переместить числа в массиве A таким образом, что бы каждое последующее число было больше предыдущего (или равно ему). Т.е. перестроить шеренгу в порядке увеличения роста.
В случае трудностей понимания при первом прочтении это раздел можно опустить.
Основная идея алгоритма заключается в следующем:
9 раз среди оставшихся элементов ищется наименьший и если такой найден, то он меняется в первый раз с первым элементом, во второй раз - со вторым (на первом месте уже стоит найденный первый наименьший элемент). В 9-ый раз выбирается минимальный элемент из 9-го и 10-го элементов и меняется местами с 9-м элементом.
Методические указания по решению задач 1-5,7,9,12,13 из пункта 1.1.5
Задача 1. Подсчет ненулевых элементов
s:=0;
for i:=1 to 10 do
if a[i]<>0 then s:=s+1;
writeln(s);
Задача 2. Подсчет элементов, абсолютная величина которых больше 7
s:=0;
for i:=1 to 10 do
if ABS(a[i])>7 then s:=s+1;
writeln(s);
Задача 3. Поиск 7
i:=1;
while (i<=10) and (a[i]<>7) do i:=i+1;
if i>10
then writeln('нет ')
else writeln('да');
Задача 4. Разность максимального и минимального элементов
max:=a[1]; min:=a[1];
for i:=2 to 10 do
begin
if a[i]>max then max:=a[i];
if a[i]<min then min:=a[i];
end;
s:=max-min;
writeln(s);
Задача 5. Попарное сравнение 2-х массивов
s1:=0; s2:=0; s3:=0;
for i:=1 to 10 do
begin
if a[i]>b[i] then s1:=s1+1;
if a[i]=b[i] then s2:=s2+1;
if a[i]<b[i] then s3:=s3+1;
end;
writeln(s1,s2,s3);
Задача 7. Суммирование и подсчет
s:=0;
for i:=1 to 10 do s:=s+a[i];
r:=s/10;
n:=0;
for i:=1 to 10 do
if a[i]>r then n:=n+1;
writeln(n);
Задача 9. Поиск максимального, подсчет
max:=a[1];
for i:=1 to 10 do
if a[i]>max then max:=a[i];
s:=0;
for i:=1 to 10 do
if a[i]=max then s:=s+1;
writeln(s);
Задача 12.Поиск 0
i:=1;
while (i<=10) and (a[i]<>0) do i:=i+1;
if i>10
then writeln('нет ')
else writeln('первый 0 стоит на позиции',i);
Задача 13.Поиск отрицательного числа с КОНЦА (!) массива
i:=10;
while (i>=1) and (a[i]>=0) do i:=i-1;
if i<1
then writeln('отрицательных чисел нет ')
else writeln('последнее число<0 стоит на позиции',i);