Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Поиск в массиве элементов с заданными свойствами. ⇐ ПредыдущаяСтр 8 из 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 вещественных чисел. Найти максимум и индекс этого элемента.
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 {Нахождение суммы первого столбца}
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; Нарушение авторского права страницы