Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Поиск в массиве элементов с заданными свойствами.↑ ⇐ ПредыдущаяСтр 7 из 7 Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Поиск максимального (минимального) элемента. Последовательный поиск — элементы массива просматриваются последовательно один за другим, при этом производится проверка соответствия элемента заданному
свойству.
Имеется 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], то - с большим индексом.
Задания для самостоятельной работы:
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 {Нахождение суммы первого столбца}
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 с.) |