Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 3.docx
Скачиваний:
3
Добавлен:
21.03.2015
Размер:
83.52 Кб
Скачать

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

Задача 6: Найти значение максимального элемента массива.

Алгоритм содержит три пункта:

1. Максимальным элементом считаем первый элемент: max=A[1].

2. Начиная со второго элемента, сравниваем имеющийся максимальный элемент max с очередным элементом массива A[i].

3. Если очередной элемент массива больше имеющегося максимального элемента, то это и есть новый максимальный элемент max=A[i].

Фрагмент программы:

Var {дополнительные переменные}

max:integer; {значение максимального элемента массива}

Begin

...

{1} max:=A[1];

{2} for i:=2 to n do

{3} if A[i]>max then max:=A[i];

Задача 7: Найти min и max значения элементов массива.

Фрагмент программы:

Var {дополнительные переменные}

max,min:integer;{значение максимального и минимального

элементов массива}

Begin

...

max:=A[1];

min:=A[1];

for i:=2 to n do

if A[i]>max then max:=A[i]

else if A[i]<min then min:=A[i];

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

Задача 8: Подсчитать, сколько раз в массиве встречается элемент, равный 10.

Задача решается по следующему алгоритму:

1. Количество нужных элементов k=0.

2. Проходим по всем элементам массива,

3. И если очередной элемент массива равен 10,

4. Тогда увеличиваем k (количество элементов равных 10) на 1.

Фрагмент программы:

Var {дополнительные переменные}

k:integer; {количество элементов, равных 10}

Begin

...

{1} k:=0;

{2} for i:=1 to n do

{3} if A[i]=10

{4} then k:=k+1;

Удаление элемента из массива

Задача 9: Удалить из массива 1-ый элемент. Удаление элемента заключается в:

1. сдвиге элементов, стоящих правее удаляемого влево;

2. уменьшении количества элементов массива n на количество

удаляемых элементов.

Сдвиг элементов выполняется так:

1. Начиная с удаляемого элемента, копируем содержимое элемента,

стоящего правее в текущий элемент: A[i]:=A[i+1].

2. Переходим к следующему элементу вправо: i:=i+1.

3. Заканчиваем сдвиг, когда i=n-1, так как i+1 при i=n-1 равен n..

Фрагмент программы:

{

1

-

сдвигаем элементы на одну позицию вправо}

{вначале i:=1, потому что надо удалить 1-ый элемент}

for i:=1 to n-1 do

A[i]:=A[i+1];

{2 - уменьшаем количество элементов в массиве}

n:=n-1;

Задача 10: Удалить из массива максимальный элемент массива.

Для этого надо:

1. Найти индекс максимального элемента.

2. Удалить элемент с найденным индексом.

Фрагмент программы:

Var {дополнительные переменные}

imax:IndexEl; {индекс максимального элемента}

Begin

...

{1 - ищем индекс максимального элемента массива}

imax:=1; {вначале imax указывает на первый элемент}

{в цикле начиная со 2-го элемента}

for i:=2 to n do

{сравниваем i-ый элемент с максимальным на текущий

момент времени, и если i-ый элемент больше максимального, то максимальным становится i-ый элемент}

if A[i]>A[imax] then imax:=i;

{2 - удаляем элемент массива с индексом imax}

for i:=imax to n-1 do

A[i]:=A[i+1];

dec(n); {уменьшаем n на 1}

Замечание: в ТР имеются процедуры увеличения и уменьшения переменной целого типа. Inc - увеличение значения переменной. Вид вызова для целого

X Inc(x); x:=x+1; Inc(x,n); x:=x+n;

где x - переменная целого типа;

n - целочисленное выражение.

В первом случае переменной x присваивается следующее значение (например, x была равна 10, тогда после выполнения inc(x) x равна 11). Таким образом, можно сказать, что запись inc(x) эквивалентна записи x:=x+1. Можно также сказать, что запись inc(x,n) эквивалентна записи

x:=x+n.

Dec – уменьшение значения переменной.

Вид вызова Для целого X

Dec(x); x:=x-1;

Dec(x,n); x:=x-n;