Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



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

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

 

1 4 9 6 7 13 19 12 5 8 k = 19; k = 3 1 4 6 7 8 8 8 4 5 4 k = 8  

 


свойству.

 

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

 

program zadacha5_1;

var

k, i, n, p: integer;

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

Begin Write('Кол. элем. массива'); readln(n);

for i: =1 to n do

begin

write('Введите a[', i, ']'); {Ввод элементов массива}

readln (a[i]);

end;

writeln('Введённый массив');

for i: =1 to n do {Вывод эл. массива}

write (a[i], ’ ’);

writeln;

write('Введите К'); readln(k);

p: =0;

for i: =1 to n do {Нахождение суммы}

if a[i]=k then p: =i;

if p=0

then writeln('элемента в табліце нет')

else writeln('элемент найден, индекс =', p)

End.

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

i: =1;

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

i: =i+1;

Решим задачу поиска наибольшего элемента в таблице А из N вещественных чисел. Найти максимум и индекс этого элемента.

 

1 4 9 6 7 13 19 12 5 8 1 4 6 7 8 8 8 4 5 4 k = 8  
program zadacha5_2;

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

max: real;

j, i: integer;

Begin

Write('Кол. элем. массива'); readln(n);

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

…………………..

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

…………………..

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

for i: =2 to n do {Поиск максимума}

if max< a[i] then

begin

max: =a[i];

j: =i;

end;

writeln;

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

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

 

End.

Алгоритм:

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

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

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

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

 

Задания для самостоятельной работы:

 

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

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

3. Дан массив целых чисел из n элементов. Найти и вывести номера элементов, заканчивающихся цифрой 0.

4. Рост N учеников класса представлен в виде массива. Найти количество учеников, рост которых не превышает значения R.

5. В массиве записаны результаты N игр футбольной команды (если игра закончилась выигрышем данной команды, то записано число 3, проигрышем - число 2, вничью - 1). Определить количество выигрышей, проигрышей, ничьих.

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

7. В массиве хранится информация о стоимости 1 кг N видов конфет. Определить порядковый номер самого дешевого вида конфет. Если таких несколько, то должен быть найден индекс: А) первого из них;

Б) последнего из них.

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

Двухмерные массивы

Примеры решения задач с использованием двухмерных массивов

Двухмерные массивы имеют строки и столбцы. Элемент массива задается номером строки и номером столбца, на пересечении которых он находится

 

 

 
 

 


Если количество строк = количеству столбцов массив называется квадратной матрицей, в противном случае - прямоугольной.

 

Задана прямоугольная матрица размера n строк и m столбцов.

Заполнить ее целыми числами. Распечатать по строкам. Найти и вывести сумму всех элесментов и их среднее арифметическое значение.

 

program zadacha5_3_1;

var

i, j, s, m, n: integer;

sr: real;

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

Begin

Write('Кол. строк, кол. столбцов? ');

readln( n, m);

for i: =1 to n do

for j: =1 to m do

begin

write('Введите a[', i, ', ', j, ']'); {Ввод элементов

readln (a[ i, j ]); массива}

end;

 

writeln('Введённый массив');

for i: =1 to n do {Вывод эл. Массива}

begin

for j: =1 to m do

write (a[ i, j ], ’ ’); {Вывод эл. массива}

writeln;

end;

s: =0;

for i: =1 to n do

for j: =1 to m do {Нахождение суммы}

s: =s + a[ i, j ];

 

writeln('Сумма =', s);

 

sr: =s / (n*m); {Нахождение среднего}

writeln('Средее =', sr: 8: 3)

End.

 

Задача.

Среди нечетных столбцов заданной целочисленной матрицы размерностью n*m найти столбец с максимальной суммой модулей элементов.

program zadacha5_3_2;

var

i, j, m, n, k, s, max: integer;

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

Begin

Write('Кол. строк, кол. столбцов? '); readln( n, m);

{Заполнить таблицу}

{Вывести таблицу по строкам}

{Первоначально будем считать сумму модулей элементов первого столбца максимальной}

s: =0;

for i: =1 to n do {Нахождение суммы первого столбца}

-3
-12 -6
-5 -5

10 18 20 21 19

max сумма мод. Неч. стол. = 20

номер столбца = 3

s: = s + abs ( a[i, 1]);

max: = s;

k: =1; j: =3;

while j < = m do

begin

s: = 0;

 

 

for i: =1 to n do

s: = s + abs ( a[ i, j ]);

if s > max

then begin

max: = s;

k: =j;

end;

j: = j+2; {Переход к очередному нечетному

end; индексу столбца }

writeln( 'Номер столбца с максим. суммой модулей элементов =',

k, 'знач. макс.=', max);

end.

Задания для самостоятельной работы:

8. Имеется целочисленный массив n*m элементов. Найти номер строки с минимальной суммой модулей элементов.

9. Имеется целочисленный массив n*m элементов. Найти индексы максимального элемента таблицы и значение максимума.

10. Имеется целочисленный массив n*m элементов. Каких элементов в массиве больше отрицательных или положительных?

11. Имеется целочисленный массив n*m элементов. Сообщить есть ли в таблице отрицательные элементы.

12. Имеется целочисленный массив n*m элементов. Найти среднее арифметическое элементов массива. Определить и вывести количество элементов массива, значение которых превышает это среднее значение.

 

Литература

1. Карасев П.Н. Информатика (программирование).-Волгоград, 2002.

2. Брудно А.Л. Каплан Л.И. Олимпиады по программированию.- М., 1985.

3. Грогоно П. Программирование на языке Паскаль/Пер. с англ.- М., 1982.

4. Каймин В.А. и др. Основы информатики и вычислительной техники (пробный учебник для 10-11 классов).-М., Просвещение, 1994.

5. Культин Н. Turbo Pascal в задачах и примерах.-Санкт-Петербург, БХВ-Петербург, 2002.

6. Немнюгин С.А. Turbo Pascal(практикум).-Санкт-Петербург, 2001.

7. Златопольский Д.М. Я иду на урок информатики (задачи по программированию 7-11 классы).-М., Первое сентября, 2002.

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-30; Просмотров: 1411; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.029 с.)
Главная | Случайная страница | Обратная связь