Задачи для изучающих программирование самостоятельно 30 Задания на лабораторную работу по теме "Обработка одномерных массивов" 39

Вид материалаДокументы

Содержание


Поиск максимального/минимального элемента массива
Var {дополнительные переменные}
Var {дополнительные переменные}
Подсчет количества элементов, удовлетворяющих заданному условию
Удаление элемента из массива
Var {дополнительные переменные}
Подобный материал:
1   2   3   4   5   6   7   8   9

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



Задача 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]




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



Задача 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;