Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебники по паскалю / Простейшие алгоритмы на одномерном массиве.doc
Скачиваний:
68
Добавлен:
25.03.2015
Размер:
66.05 Кб
Скачать

Сортировка элементов одномерного массива

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);