Массивы способы обработки данных

20) Способы обработки массивов.

Сумма элементов массива

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

Число положительных элементов массива

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

Определение максимального элемента

Пример программы, которая сначала вводит 30 действительных чисел, затем организовывает их хранение в массиве, определяет значение и индекс (номер) максимального элемента этого массива и выдает сообщение на экран.

Поиск элемента в неупорядоченном массиве

Пример программы, которая сначала вводит 30 различных (!) реальных чисел, организовывает их хранение в массиве, затем запрашивает так называемое «контрольное число». После этого проверяет, есть ли в массиве элемент, который равен контрольному числу.

21) Ввод и вывод в программе.

Sub йцу() Dim c As Integer ‘ для ввода можно использовать стандартный метод inputbox с = InputBox(«Введите значение», «Заголовок», 0) ‘ для вывода используется Msgbox MsgBox c End Sub Метод InputBox в VBA При работе с VBA неоценимую помощь может оказать использование метода InputBox в качестве окна ввода данных для получения информации от пользователя. Метод имеет следующий общий вид: object.InputBox(Запрос, Заголовок, По_умолчанию, Слева, Сверху, Справка, Раздел, Тип) • Запрос – указывает текст, отображаемый в окне ввода (обязательный пара-метр). • Заголовок – определяет заголовок окна ввода (необязательный параметр). • По_умолчанию – задает значение, которое отображается в окне ввода по умолчанию (необязательный параметр) • Слева, Сверху – определяет координаты верхнего левого угла окна ввода на экране (необязательный параметр). • Справка, Раздел – указывает файл и раздел в справочной системе (необяза-тельный параметр). • Тип – указывает код типа данных, который будет возвращаться методом (не-обязательный параметр).

Пример. Метод InputBox является достаточно гибким. Использование суммы значений позволяет возвратить несколько типов данных. Например, для отображения окно ввода, которое принимает текстовый или чис¬ловой тип данных, установим код в значение 3 (т.е. 1+2 или «число» + «текст»). Следующая процедура вычисляет сумму двух чисел, если вводится числовые данные, и конкатенацию, если вводится текстовые данные. Sub Subjects4_Prog3() Dim A As Integer, B As Integer A = Application.InputBox(Prompt:=»Введите данные», Type:=3) B = Application.InputBox(Prompt:=»Введите данные», Type:=3) S = A + B MsgBox S End Sub MsgBox же позволяет вывести на экран диалоговое окно с определенным сообщением MsgBox c, vbOKOnly, «Значение с» с — возвращаемое значение, vbOkOnly — тип диалогового окна Значение с — заголовок окна

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Источник

Примеры обработки массивов данных

Рассмотрим основные действия над элементами массивов на примерах.

Пример 1. Обработка одномерного массива.

Вычислить % дней в месяце, когда температура опускалась ниже 0 0 С.

Для упрощения вычислений введем следующие обозначения:

all_d – всего дней в месяце (примем значение all_d =31);

cold_d– количество холодных дней;

t – массив температур за месяц;

pr – процент дней с отрицательной температурой.

Текст программы Coldна языке Паскаль

Type days = array[1..31] of real;

Writeln(‘Введите количество дней в месяце’);

Writeln(‘Введите массив температур за месяц — t’);

For i:= 1 to all_d do

For i := 1 to all_d do

Упорядочивание элементов совокупности позволяет упростить дальнейший поиск или представить полученные результаты в более понятном виде. Рассмотрим основные определения.

Сортировкой называется процесс упорядочивания набора данных одного типа по возрастанию или убыванию значения какого-либо признака [1].

Массив, например, массив А=1, a2, …, an>, является отсортированным (упорядоченным) по возрастанию, если для всех индексов i из интервала выполняется условие .

Сортировка строк – это ранжирование данных строкового типа по алфавиту. Фактически символы, составляющие строку, упорядочиваются по их номеру в кодовой таблице ASCII. Наиболее часто сортировку строк выполняют при выводе различных списков (фамилий, названий).

Читайте также:  Способ количественного фона карты

Различают обменные сортировки, сортировки выбором, сортировку вставками, сортировку слиянием.

Предположим, что имеется исходный массив А=1, a2, …, a10>, который необходимо упорядочить по возрастанию.

Обменные сортировки

Суть обменных сортировок заключается в следующем. Сначала последовательно просматриваются элементы a1, …, an и находится наименьшее i, такое, что ai>ai+1. Затем элементы ai и ai+1 меняются местами, и просмотр возобновляется с ai+1 элемента, и т.д. Тем самым, наибольшее число передвигается на последнее место. Следующие просмотры начинаются опять сначала, уменьшая на единицу количество просматриваемых элементов. Массив будет упорядочен после просмотра, в котором участвовали только первый и второй элементы. Процесс сортировки по убыванию будет аналогичен.

В пределах этого вида можно выделить такие методы сортировок, как метод «пузырька»; метод улучшенной «пузырьковой» сортировки; метод быстрой сортировки.

Для сортировки методом «пузырька»массив последовательно просматривается несколько раз. Каждый просмотр состоит из сравнения каждого элемента массива ai с элементом ai+1 и обмена этих двух элементов, если они расположены не в нужном порядке.

Пример 1 . Пусть задан массив А, состоящий из элементов: А=<25; 57; 48; 37; 12; 92; 86; 33>. Упорядочить его по возрастанию значений элементов.

На первом просмотре делаем следующие сравнения:

а1 с а2 (25 и 57) – нет обмена;

а5 с а6 (57 с 92) – нет обмена;

Таким образом, после первого просмотра элементы массива будут располагаться в таком порядке:

25 48 37 12 57 86 33 92.

После первого просмотра наибольший элемент 92 находится в нужной позиции. В общем случае элемент а(ni+1) будет находиться в нужной позиции после i-той итерации. Этот метод называется «методом пузырька» потому, что каждое число, словно пузырек, медленно всплывает вверх в нужную позицию.

После второго просмотра получим последовательность:

25 37 12 48 57 33 86 92.Элемент 86 на нужном месте.

Поскольку каждая итерация помещает новый элемент в нужную позицию, то для сортировки некоторого массива, состоящего их n элементов, требуется не более n-1 итерации. Полный набор итераций для массива А выглядит следующим образом:

1-ая итерация 92;
2-ая итерация 92;
3-ая итерация 92;
4-ая итерация 92;
5-ая итерация 92;
6-ая итерация 92;
7-ая итерация 92.

Метод улучшенной «пузырьковой» сортировки основан на методе «пузырька» с той лишь разницей, что количество итераций меньше. Рассмотрим его на примере.

Пример 2. Упорядочим по возрастанию методом «пузырька» массив А, представленный в примере 13.1, а также проиллюстрируем метод улучшенной «пузырьковой» сортировки на примере упорядочивания данного массива по убыванию.

Создаем вспомогательные массивы В и С. В массиве В будут сохраняться результаты сортировки по убыванию, в массиве С – по возрастанию. Исходный массив А и отсортированные массивы В и С выведем на экран, используя подпрограмму-процедуру.

Источник

Учитель информатики

Сайт учителя информатики. Технологические карты уроков, Подготовка к ОГЭ и ЕГЭ, полезный материал и многое другое.

Обработка массивов.

Информатика. Учебник для 9 класса (по учебнику К. Ю. Полякова, Е.А. Еремина, базовый уровень)

§20. Обработка массивов.

Введение

Ключевые слова:

Современные компьютеры работают с огромными массивами данных. При этом размер программы не зависит от размера массива: можно написать очень короткую программу, которая обрабатывает миллиарды чисел.

Из курса 8 класса вы уже знаете, как найти сумму элементов массива и его максимальный (минимальный) элемент, определить количество элементов, удовлетворяющих условию. В этом параграфе мы изучим некоторые более сложные алгоритмы.

Вспомните и запишите в тетрадь, как:

• объявить целочисленный массив из N элементов;
• заполнить массив нулями;
• заполнить массив натуральными числами от 1 до N;
• заполнить массив случайными числами в диапазоне [50, 100];
• найти сумму значений всех элементов массива;
• найти сумму значений чётных элементов массива;
• найти количество отрицательных элементов массива;
• найти максимальный элемент массива.

Читайте также:  Восстанавливающее масло для волос constant delight способ применения

Перестановка элементов массива

Во многих задачах нужно переставлять элементы массива, т. е. требуется менять местами значения двух ячеек памяти.

Представьте себе, что в кофейной чашке налит сок, а в стакане — кофе, и вы хотите, чтобы было наоборот. Что вы сделаете?

Вернёмся к программированию. Чтобы поменять местами значения двух переменных — а и b, нужно использовать третью переменную того же типа:

Перестановка двух элементов массива, например А [i] и А [к], выполняется так же:

Теперь рассмотрим несколько задач, в которых требуется переставить элементы массива в другом порядке.

Задача 1. Массив А содержит чётное количество элементов N. Нужно поменять местами пары соседних элементов: первый со вторым, третий — с четвёртым и т.д. (рис. 4.1).

Рис. 4.1

С каким элементом нужно поменять местами элемент А [i]? Зависит ли ваш ответ от свойств числа i?

Сергей написал такой алгоритм для решения задачи 1:

нц для i от 1 до N

поменять местами A[i] и A[i+1]

кц

Выполните его вручную для массива <1, 2, 3, 4>(N = 4). Объясните результат. Найдите ошибки в этом алгоритме.

Обратите внимание, что на последнем шаге цикла мы будем менять местами элемент А [ N ] с несуществующим элементом A [N+1 ]. Это вызовет ошибку, которая называется выход за границы массива. Но даже если изменить наибольшее значение переменной цикла на N-1, программа всё равно будет работать неправильно, т. е. приведёт к неверному решению задачи 1. Получится, что первый элемент просто «переедет» на место последнего.

Для того чтобы исправить программу, нужно изменять переменную i с шагом 2:

Решение на языке Паскаль получилось немного более сложным, потому что в этом языке можно изменять переменную цикла только с шагом 1 или -1, а нам нужен шаг 2. В этой ситуации можно, например, использовать цикл с условием (цикл while).

Предложите другое решение этой задачи, записав нужные операторы в теле цикла.

Реверс массива

Задача 2. Требуется выполнить реверс массива, т. е. переставить элементы массива в обратном порядке, так чтобы первый элемент стал последним, а последний — первым (рис. 4.2).

Рис. 4.2

С каким элементом нужно поменять местами элемент А [1] ? Элемент А [2]? Элемент А [i]?

Если индекс первого элемента в паре увеличивается на 1, а индекс второго элемента уменьшается на 1, что можно сказать о сумме индексов этих элементов?

В этой задаче сумма индексов элементов, участвующих в обмене, для всех пар равна N+1, поэтому элемент с номером i должен меняться местами с (N+l-i)-M элементом.

Выполните вручную следующий алгоритм для массива <1, 2, 3, 4>(N = 4). Объясните результат. Найдите ошибки в этом алгоритме (почему он не решает задачу 2?).
нц для i от 1 до N
поменять местами A[i] и А[N+1-i]
кц

Для того чтобы не выполнять реверс дважды, нужно остановить цикл на середине массива:
нц для i от 1 до div(N, 2)
поменять местами А[i] и A[N+l-i]
кц

Запишите в тетради операторы, которые нужно добавить в тело цикла. Для обмена используйте вспомогательную переменную с.
нц для i от 1 до div(N, 2) for i:=l to N div 2 do begin
• • • • • •
КЦ end;

Запишите в тетради другое решение задачи реверса массива, которое использует цикл с условием (пока, while).

Линейный поиск в массиве

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

Сколько операций сравнения придётся выполнить, если в массиве N элементов? В каком случае количество сравнений будет наименьшим? Наибольшим?

Катя торопилась и написала такой алгоритм линейного поиска:
i:=1
нц пока A[i]<>Х i:=i+l
кц
вывод ‘А [‘, i,’] = ‘,X

Проверьте: правильно ли сработает алгоритм, если искать в массиве <1, 2, 3>число 2? Число 4?

Читайте также:  Эффективные способы очистки газов

Этот алгоритм хорошо работает, если нужный элемент в массиве есть, однако приведёт к ошибке, если такого элемента нет, — получится зацикливание и выход за границы массива. Чтобы этого не произошло, в условие нужно добавить ещё одно ограничение: i

В сложном условии i X первым должно проверяться именно отношение i N, проверка условия А [i] <> X приводит к выходу за границы массива, и программа может завершиться аварийно.

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

Для выхода из цикла используется оператор выход (в Паскале — break), номер найденного элемента сохраняется в переменной nХ. Если её значение осталось равным нулю (не изменилось в ходе выполнения цикла), то в массиве нет элемента, равного X.

Сортировка массивов

Сортировка — это расстановка элементов списка (массива) в заданном порядке.

Возникает естественный вопрос: зачем сортировать данные? На него легко ответить, вспомнив, например, работу со словарями: сортировка слов по алфавиту облегчает поиск нужной информации.

Для чисел обычно используют сортировку по возрастанию (каждый следующий элемент больше предыдущего) или убыванию (следующий элемент меньше предыдущего). Если в массиве есть одинаковые элементы, их можно расставить по неубыванию (каждый следующий элемент не меньше предыдущего) или невозрастанию.

Математики и программисты изобрели множество способов сортировки. В целом их можно разделить на две группы: 1) простые, но медленно работающие (на больших массивах), и 2) сложные, но быстрые.

Мы изучим один из простых методов, который называется методом выбора. Для примера будем рассматривать сортировку по возрастанию (неубыванию).

Предположим, что мы нашли минимальный элемент массива. Где он должен размещаться в отсортированном массиве?

Запишите в тетради фрагмент программы для поиска номера минимального элемента массива.

Для того чтобы поставить на место минимальный элемент, мы просто поменяем его местами с первым элементом массива.

Запишите в тетради фрагмент программы, который меняет местами элементы А[1] и A[nMin]. Используйте вспомогательную переменную с.

После того как мы установили на место первый (минимальный) элемент, находим минимальный из оставшихся и ставим его на второе место и т. д. Полный алгоритм записывается в виде вложенного цикла:

На первом шаге внешнего цикла значение i равно 1, и мы ставим на первое место минимальный элемент. На следующем шаге i = 2, мы ищем минимальный элемент среди всех, кроме первого, и т. д.

Обратите внимание, что внешний цикл выполняется N-1 раз (а не N). Этого достаточно, потому что если N-1 элементов стоят на своих местах, то последний тоже стоит на своём месте (другого свободного места для него нет).

Решение на языке Паскаль выглядит так:

Что получится, если внешний цикл (по переменной i) выполнить только 1 раз? Только 3 раза?

Выводы

• Поменять местами значения двух элементов массива можно с помощью вспомогательной переменной.
• Выход за границы массива — это обращение к элементу массива с несуществующим индексом.
• Линейный поиск — это перебор всех элементов массива до тех пор, пока не будет найден нужный элемент или не закончится массив.
• Сортировка — это расстановка элементов списка (массива) в заданном порядке. Для чисел обычно используют сортировку по возрастанию (неубыванию) или убыванию (невозрастанию). Данные сортируют для того, чтобы ускорить последующий поиск.

Нарисуйте в тетради интеллект-карту этого параграфа.

Вопросы и задания

1. Что такое выход за границы массива? Что опаснее — чтение или запись данных за границами массива?
2. На какой идее основан метод сортировки выбором?
3. Объясните, зачем нужен вложенный цикл в алгоритме сортировки.
4. Как нужно изменить программу сортировки, чтобы элементы массива были отсортированы по убыванию?
5. Выполните по указанию учителя задания в рабочей тетради.

Подготовьте сообщение

а) «Сортировка методом пузырька»
б) «Сортировка методом вставки»

Источник

Оцените статью
Разные способы