21. Младшие_Поиск в массиве

Мар 13, 2017 // By:maximios // No Comment



Младшие Поиск элементов одномерного массива    11.03.2017

1. Поиск элемента массива с заданными характеристиками

Последовательный поиск — элементы массива просматриваются последовательно один за другим, при этом производится проверка соответствия элемента заданному свойству.

Пример 1. Имеется N целых чисел. Необходимо найти число (элемент), значение которого равно К. Если такой элемент в последовательности есть, то указать его порядковый номер.

i

1

2

3

4

5

6

7

8

9

10

A[i]

1

4

9

6

7

13

19

12

5

8

 

i

1

2

3

4

5

6

7

8

9

10

A[i]

1

4

6

7

8

8

8

4

5

4

K=19, K=8

Program Poisk;

var

k,i,n,p:integer;

a:array[1..50] of integer; {описание массива}

Begin

Write(‘Кол-во элементов массива N=‘);

readln(N);

for i:=1 to N do             {Ввод элементов массива}

read (a[i]);          

write(‘Введите К=‘);

readln(k);

p:=0;

for i:=1 to n do {Ищем элемент, равный k }

if a[i]=k then p:=i; {и запоминаем его номер }

if p=0

then writeln(‘элемента в таблице нет’)

else writeln(‘элемент найден, его индекс =’,p)

End.

Внимание! В данной задаче в случае наличия в массиве нескольких элементов, равных К, будет выдан номер последнего из найденных.

Для поиска первого элемента равного К можно:

 

1) использовать прерывание цикла – break

p:=0;

for i:=1 to n do

if a[i]=k then

begin

p:=i;

break

end;

2) использовать цикл с условием:

i:=1;

While (i<=n) and ( a[i] <> k) do

i:=i+1;

if i=n+1

then writeln(‘Элемент не найден’)

else writeln(‘Номер=’, i);

 

 

 

2. Поиск максимального (минимального) элемента массива.

Пример 1. Имеется таблица (массив) А из N вещественных чисел. Необходимо найти наибольший (максимальный) элемент массива и его индекс.

 

Program Maximum;

var a:array[1..50] of real;

max: real;

j,i,n: integer;

Begin

Write(‘Кол-во элементов массива N=’);

readln(N);

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

max:=a[1]; j:=1;

for i:=2 to n do

if a[i]> max then

begin      {Поиск максимума}

max:=a[i];

j:=i;

end;

writeln(‘Макс. элемент массива =’, max );

writeln(‘Индекс макс. элемента =’, j );

End.

Алгоритм поиска
максимального элемента в массиве:

1. Условно считаем первый элемент наибольшим (максимальным). Запоминаем его значение (a[1]) и его индекс (=1).

2. Cравниваем значение максимального с очередным элементом таблицы a[i], начиная со второго элемента и до последнего.

3. При нахождении элемента с большим значением меняем значение максимального на найденный элемент и запоминаем его индекс.

4. При наличии в таблице нескольких максимальных и при условии a[i]>max будет найден максимальный элемент с наименьшим индексом (первый встретившийся в таблице), а если условие будет max>=a[i], то с большим индексом.

 

 

3. Решение задач

 

1. Имеется целочисленный массив, состоящий из 15 элементов. Найти минимальный элемент и его индекс.

2. В массиве хранится информация о количестве осадков (целые числа), выпавших за каждый день прошедшей недели. Вывести номера дней, когда осадков не было.

3. Сколько дней недели температура была ниже среднемесячной (среднемесячная температура вводится с клавиатуры).

4. Градусник «ошибался» (показывал отрицательную температуру с ошибкой в 2 градуса). Уменьшите температуру в те дни, когда она была отрицательной на 2 градуса.

5. В массиве хранится информация о росте N человек. Определить, на сколько рост самого высокого человека превышает рост самого низкого.

6. Есть ли в данном массиве два соседних отрицательных элемента?

6*. Отопление включают, если в течение трех дней температура воздуха не превышает 5°С. Заполнить массив значениями температур в октябре. На какой день включат отопление?

7. Массив заполнен значениями заработных плат работников фирмы «Рога и копыта». В октябре произошло увеличение зарплаты в среднем на 15%. Напечатать новые значения заработных плат.

7*. Условие то же. Учесть, что первым пяти сотрудникам зарплату повысили не на 15%, а на 25%, а последним трем – всего на 10%.

8. Даны два целочисленных массива одинаковой размерности. Получить третий массив той же размерности, каждый элемент которого равен большему из соответствующих элементов данных массивов.

8*. Участники школьной спартакиады соревнуются в беге на 60 м. На финише их результаты фиксируются двумя секундомерами, и заносятся в разные протоколы. Выбрать из каждого забега лучший результат и занести его в итоговый протокол (для формирования пар участников финального забега).

9. Даны два массива. Найти среднее арифметическое элементов каждого массива и сравнить их значения.

9*. Даны два списка оценок учеников 8 «А» и 8 «Б» классов (значения среднего балла по каждому ученику). Выяснить какой класс имеет более высокий рейтинг успеваемости. (Рейтинг класса – среднее значение средних баллов всех учеников класса).

10.Ученики 8 «А» класса решили опровергнуть пословицу «Сила есть – ума не надо» и организовали конкурс по гиревому спорту. Организаторы внесли в таблицу количество подъема 10-килограммовой гири каждым участником, причем номер участника соответствовал рейтингу успеваемости ученика в классе. Затем в отдельную таблицу были сведены результаты по формуле: количество толчков гири минус квадрат рейтинга. Выяснить номер победителя.

 

 

 

Leave a Comment

Your email address will not be published.