Обработка массива Типовые задачи
нахождение в массиве заданного элемента; нахождение в массиве заданного элемента; вычисление среднего арифметического и геометрического элементов массива; вычисление среднего арифметического и геометрического элементов массива; подсчет элементов в массиве, удовлетворяющих заданному условию; подсчет элементов в массиве, удовлетворяющих заданному условию; поиск в массиве максимального (минимального) элемента; поиск в массиве максимального (минимального) элемента; сортировка элементов массива сортировка элементов массива
Типовые задачи на нахождение в массиве заданного элемента ЗАДАЧА ЗАДАЧА Определить имеется ли в массиве заданный элемент. Определить имеется ли в массиве заданный элемент.
РЕШЕНИЕ Будем считать, что одномерный целочисленный числовой массив задан случайным образом. От пользователя требуется ввести число. Если в массиве есть элемент с таким значением, то необходимо выдать соответствующее сообщение. Таким образом, задача сводится к сравнению каждого элемента массива с введенным пользователем числом. Условные обозначения: g – запрашиваемое у пользователя число (целый тип) g – запрашиваемое у пользователя число (целый тип) n – размерность массива (число элементов в массиве) n – размерность массива (число элементов в массиве) m – массив, содержащий целые числа в диапазоне от a до b m – массив, содержащий целые числа в диапазоне от a до b
program element; const n = 15; a = – 4; b = 40; var i, g: integer; otv:string[5]; m: array [1..n] of integer; m: array [1..n] of integer; Begin {заполнение массива } for i:=1 to n do m[i]:= random(b – a) + a; for i:=1 to n do m[i]:= random(b – a) + a; {вывод на экран} for i:=1 to n do write(m[i]:6); for i:=1 to n do write(m[i]:6);{ } write ('введите число '); readln (g); write ('введите число '); readln (g); i := 1; otv:=нет; i := 1; otv:=нет; repeat repeat if g=m[i] then begin otv:=есть; i:=n end; if g=m[i] then begin otv:=есть; i:=n end; i := i + 1; i := i + 1; until (i > n); until (i > n); writeln ('В массиве ', otv, элемент ', g); writeln ('В массиве ', otv, элемент ', g); readln; readln; End.
Типовые задачи на вычисление среднего арифметического и геометрического элементов массива ЗАДАЧА Вычислить среднее арифметическое элементов массива.
Решение Вычисление среднего арифметического сводится к суммированию всех элементов массива Вычисление среднего арифметического сводится к суммированию всех элементов массива Условные обозначения: Условные обозначения: m – массив, содержащий целые числа в диапазоне от a до b n – размерность массива (число элементов в массиве) sr – среднее арифметическое (вещественный тип) s – сумма всех элементов массива (целый тип)
program sr_arif; program sr_arif; const n = 15; a = – 10; b = 50; const n = 15; a = – 10; b = 50; var m : array [1..n] of integer; i, s: integer; sr:real; i, s: integer; sr:real; Begin {заполнение массива } for i:=1 to n do m[i]:= random(b – a) + a; for i:=1 to n do m[i]:= random(b – a) + a; {вывод на экран} for i:=1 to n do write(m[i]:6); for i:=1 to n do write(m[i]:6); {суммирование всех элементов} s := 0;{начальное значение суммы s=0} s := 0;{начальное значение суммы s=0} for i:= 1 to n do s := s + m[i]; for i:= 1 to n do s := s + m[i]; sr:= s / n; {сумму всех элементов делим на их количество} sr:= s / n; {сумму всех элементов делим на их количество} {вывод ответа} writeln ('среднее арифметическое элементов массива = ', sr:6:2); writeln ('среднее арифметическое элементов массива = ', sr:6:2); readln; readln; End.
Типовая задача на подсчет элементов в массиве, удовлетворяющих заданному условию ЗАДАЧА ЗАДАЧА Вычислить произведение элементов массива, кратных трем. Вычислить произведение элементов массива, кратных трем. Кроме проверки условия необходимо предусмотреть выдачу сообщения в случае, когда в массиве не будет ни одного элемента, кратного трем. Кроме проверки условия необходимо предусмотреть выдачу сообщения в случае, когда в массиве не будет ни одного элемента, кратного трем.
Решение РЕШЕНИЕ РЕШЕНИЕ Запишем условие для накопления произведения на языке математики. Кратность трем означает, что значение элемента массива должно делится нацело на три, т. е. a[i]/3, где a[i] – элемент массива с номером i. Запишем условие для накопления произведения на языке математики. Кратность трем означает, что значение элемента массива должно делится нацело на три, т. е. a[i]/3, где a[i] – элемент массива с номером i. Тогда на языке программирования Pascal условие делимости будет записано следующим образом: Тогда на языке программирования Pascal условие делимости будет записано следующим образом: if (a[i] mod 3) = 0 then p:= p* a[i]; if (a[i] mod 3) = 0 then p:= p* a[i]; Условные обозначения: Условные обозначения: m – массив, содержащий целые числа в диапазоне от a до b m – массив, содержащий целые числа в диапазоне от a до b n – размерность массива (число элементов в массиве) n – размерность массива (число элементов в массиве) p – произведение всех элементов массива, кратных трем p – произведение всех элементов массива, кратных трем
program proizved; const n = 15; a = – 10; b = 50; const n = 15; a = – 10; b = 50; var m : array [1..n] of integer; i, p: integer; otv: string [4] ; i, p: integer; otv: string [4] ; Begin {заполнение массива } for i:=1 to n do m[i]:= random(b – a) + a; for i:=1 to n do m[i]:= random(b – a) + a; {вывод на экран} for i:=1 to n do write(m[i]:6);{решение задачи} for i:=1 to n do write(m[i]:6);{решение задачи} p := 1; otv:=нет for i:= 1 to n do if (a[i] mod 3) = 0 then begin p:= p* a[i]; otv:=есть end; if (a[i] mod 3) = 0 then begin p:= p* a[i]; otv:=есть end; if otv:=есть then writeln ('произведение элементов массива, кратных трем = ', p) if otv:=есть then writeln ('произведение элементов массива, кратных трем = ', p) else writeln ('в массиве нет элементов, кратных трем'); else writeln ('в массиве нет элементов, кратных трем'); readln; End.
Типовая задача на поиск в массиве максимального элемента ЗАДАЧА Найти максимальную из сумм a1 + an; a2 + an-1; …, где a1,a2, … an – элементы массива.
Решение РЕШЕНИЕ РЕШЕНИЕ Задача сводится к последовательному нахождению сумм a1 + an; a2 + an-1; … и выбора из них наименьшей. Условные обозначения: m – массив, содержащий целые числа в диапазоне от a до b n – размерность массива (число элементов в массиве) max – минимальная из сумм a1 + an; a2 + an-1; …
program max_sum; const n = 14; a = – 20; b = 10; var m : array [1..n] of integer; i, max: integer; i, max: integer; Begin {заполнение массива } for i:=1 to n do m[i]:= random(b – a) + a; for i:=1 to n do m[i]:= random(b – a) + a; {вывод на экран} for i:=1 to n do write(m[i]:6);{решение задачи} for i:=1 to n do write(m[i]:6);{решение задачи} max:=a[1] + a[n]; {начало поиска} for i : = 2 to n do if max< a[i] + a[n – i + 1] then max := a[i] + a[n – i + 1]; if max< a[i] + a[n – i + 1] then max := a[i] + a[n – i + 1]; {вывод ответа} writeln (максимальная сумма равна ', max) readln; readln; End.
Задание Открыть электронный учебник Шауцуковой Практика. Глава 2. Алгоритмы, реализуемые с помощью циклов типа ДЛЯ Открыть электронный учебник Шауцуковой Практика. Глава 2. Алгоритмы, реализуемые с помощью циклов типа ДЛЯ Изучить примеры обработки массива Изучить примеры обработки массива