Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

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

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

 

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], то - с большим индексом.

 

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

 

4. Имеется целочисленный массив, состоящий из 15 элементов

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

5. В массиве хранится информация о количестве осадков (целые

числа), выпавших за каждый день прошедшей недели. Вывести

номера дней, когда осадков не было.

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-08-15; просмотров: 840; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.140.251 (0.009 с.)