INFONKO.RU

Алгоритмы обработки одномерных массивов

Тема 4.7

Алгоритмы обработки одномерных массивов

Структурированные данные

Средства описания и работы с одномерными массивами данных

Динамические массивы

4.7.4. Базовые алгоритмы обработки одномерных массивов и примеры их программирования

Элементы управления для работы со списками

4.7.6. Тестовые задания

4.7.7. Лабораторная работа по теме «Программирование алгоритмов формирования и обработки одномерных массивов»

4.7.7.1. Вопросы, подлежащие изучению

4.7.7.2. Общее задание на разработку проекта

4.7.7.3. Варианты индивидуальных заданий

4.7.7.4. Содержание отчёта

4.7.7.5. Пример выполнения задания

4.7.7.6. Контрольные вопросы

Структурированные данные

Часто приходится обрабатывать не одиночные данные, а совокупность данных одного типа. Например, задача табулирования функции, которая состоит в получении последовательности значений заданной функции при нескольких значениях аргумента. Для промежуточного хранения каждого значения полученных данных требуется объявить собственную переменную с уникальным именем.

Обращение к каждой переменной последовательности по имени превращается в длинную вереницу однотипных операций с каждой переменной. Программный код становится плохо обозримым. Для размещения такой программе требуется много памяти.

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

Массив – это совокупность однотипных переменных (элементов массива). Имя у всех переменных одно и то же, а для доступа к конкретному элементу массива используется дополнительный идентификатор – его порядковый номер (индекс), который начинается с 0.

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

Наряду со стандартными структурами данных, могут использоваться структуры данных, определяемые пользователем. Эти структуры данных определяются средствами объектно-ориентированного программирования с помощью классов.

4.7.2. Средства описания и работы с одномерными
массивами данных

Массив – последовательность переменных одинакового типа, объединенных общим именем. Например: одномерный массив а(9) состоит из 10 элементов с общим именем а: a(0), a(1), a(2), a(3),..., a(9), упорядоченных по индексу i,который принимает значения от 0 до 9:

a(i)
i

Массив в программе VBобъявляется точно так же, как объявляются простые переменные. Если массив объявлен локальным, его можно использовать только в той процедуре, в которой он объявлен. Если массив объявлен как глобальный, он может быть использован в любом месте программы.



При объявлении массива оператор объявления должен включать следующую информацию:

· имя массива – имя (идентификатор), которое используется для представления массива в программе;

· тип данных – тип данных, который имеют элементы массива;

· размерность (ранг) – количество измерений объявляемого массива (т.е. количество индексов при объявлении; одномерные массивы имеют одно измерение);

· количество элементов – количество элементов, которые будут содержаться в массиве.

Рассмотрим примеры некоторых описаний массивов:

В этих примерах объявлены следующие массивы:

· одномерный массив d, состоящий из 31 элемента типа Integerс индексами от 0 до 30;

· одномерный массив a, состоящий из 11 элементов типа Double с индексами от 0 до 10;

· двумерный массив b, состоящий из 14х11=151 элемента типа Single с индексами по строкам от 0 до 13 и по столбцам от 0 до 10.

Обратите внимание, что значением нижней границы массива в VB может быть только 0.

Таким образом, массив состоит из элементов, которые могут быть доступны при помощи индексов. При обращении к элементам массива индексы записываются вслед за именем в круглых скобках и могут представлять собой любое допустимое целочислен­ное выражение. Например, d(24), a(2*i+1).

Обратите внимание, что количество индексов указывает на размерность массива. Так, в приведенном выше примере размерность массива a(10) равна единице. Массив b(2,3) имеет размерность 2.

В отличие от размерности, размер массива – это количество элементов в массиве. В нашем примере размер массива, а(10) равен 11.

Перед использованием массива в программе его необходимо объявить с помощью оператора Dim, а элементам массива присвоить конкретные значения. Оператор Dim выделяет место в памяти компьютера для размещения элементов массива, обнуляет элементы числовых массивов или заполняет элементы строковых массивов пустыми строками ('''').

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

Заполнить элементы массива конкретными значениями можно с помощью ввода значений элементов массива, с помощью оператора присваивания или с помощью инициализации элементов массива.

Инициализация элементов массива – это поэлементное присваивание значения в операторе объявления массива. В этом случае размер массива не указывается в круглых скобках после имени массива, а определяется неявно размером списка значений. Список значений начинается с элемента с индексом 0 и заключается в фигурные скобки, например:

Dim Город ( ) As String = {"Рязань" , "Тула" , "Калуга"}

Следует отметить, что независимо от конкретной задачи, алгоритмы формирования и обработки массивов обычно строятся с использованием регулярных циклических структур:

Fori = 0 ТоКоличествоЭлементовМассива – 1 ИмяМассива(i) = выражение или Переменная = ИмяМассива(i) Next i

Чтобы облегчить работу с массивами в процедурах, для определения верхней границы массива используется встроенная функция
Bound(ИмяМассива).

Эта функция возвращает (определяет) номер последнего элемента массива и позволяет обрабатывать массивы в процедурах, не передавая в них в качестве параметра количество элементов массива. Например,

For i = 0 То UBound(ИмяМассива) ИмяМассива(i) =выражениеили Переменная = ИмяМассива(i) Next i

Кроме того, для определения верхней границы одномерного массива можно использовать методGetUpperBound().Поскольку массив одномерный, то в скобках следует указывать значение 0. Например:

For i = 0 To a.GetUpperBound(0) sum = sum + a(i) Next i

Если имя массива, является формальным параметром процедуры, то после имени массива необходимо поместить пустые круглые скобки:

ByValИмяМассива()AsТипили ByRefИмяМассива()AsТип

Кроме того, известно, что ключевое слово ByValуказывает передачу аргумента-массива по значению, а ключевое слово ByRefуказывает, что аргумент-массив передается по ссылке. Заметим, что если ключевые слова ByValили ByRefопущены, то аргумент-массив переда­ется по ссылке.

Таким образом, при описании формальных параметров любой процедуры после ИмяМассива не­обходимо всегда включать пустые круглые скобки, так как они указывают, что этот параметр являет­ся одномерным массивом.

Sub Show1(ByRef Lines() As Single, ByVal NLines As Integer) … End Sub Function Sort(ByRef List() As String) NLines As Integer … End Sub

Обращение к этим процедурам может, например, быть следующим:

Show1(Lines, 5) N1 = Sort(List)

Обратите внимание на то, что после имени массива, который является фактическим параметром, скобки отсутствуют.

Как известно, передача аргументов по значению (с помощью ключевого слова ByVal)приводит к тому, что VB передает копию данных процедуре. Поэтому не следует передавать массивы по значению, если в этом нет особой необходимости.

Примера 4.7.2-1

'Процедура формирования массива случайным образом на интервале [2;4] Sub vvodSngRnd16(ByRef a( ) As Single) Dim i As Integer For i = 0 To UBound(a) a(i) = 2 + 2 * Rnd( ) Next i End Sub

Рис. 4.7.2-2. Процедура формирования массива случайным образом

Примера 4.7.2-1

'Процедура форматного вывода массива типа Single в ListBox Sub vivodSngMac17(ByRef a( ) As Single, ByVal L As ListBox) Dim i As Integer Dim m As String = "" For i = 0 To UBound(a) m = m + Format(a(i), "0.000") + Space(4) Next i If m ="" Then m = "массив пуст" L.Items.Add(m) End Sub

Рис. 4.7.2-3. Процедура форматного вывода массива Single в ListBox

Примера 4.7.2-1

Динамические массивы

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

Dim Sigma(5) As Integer, m(3) As Single

Однако размеры массивов не всегда известны заранее, часто они определяются в ходе выполнения программы. Например, при табулировании значений функции количество хранимых значений в одномерном массиве определяется шагом дискретизации и диапазоном табулируемых значений функции, которые могут задаваться пользователем или вычисляться в процессе выполнения программы. Объявлять размерности массивов такими большими, что это будет заведомо достаточно для всех случаев, не всегда возможно и нерационально.

Одно из решений проблемы – выделять память под массив не на этапе компиляции – статически, а после определения его размера – динамически. В качестве размера массива может быть использована переменная, значение которой вычисляется или вводится перед объявлением массива:

РазмерМассива = Выражение или РазмерМассива= Cint(TextBox1.Text) DimИмяМассива(РазмерМассива)AsТип

Другое решение проблемы – разделить в программе объявление массива и определение его размера – выделение памяти под него.

При объявлении массива размер не указывается:

DimИмяМассива( )AsТип

Значение размерности определяется позже (вычисляется или вводится) непосредственно перед его использованием, и тогда для выделения памяти уже объявленному массиву с указанием конкретной размерности массива используется оператор ReDimили ReDim Preserve:

ReDimИмяМассива (РазмерМассива), ReDim PreserveИмяМассива (РазмерМассива)

Таким образом, динамические массивы имеют весьма полезное свойство – их размеры могут изменяться в процессе выполнения программ. При этом оператор ReDim изменяет размер массива и очищает его (обнуляет его элементы), а оператор ReDim Preserve изменяет размер массива и сохраняет значения существующих элементов.

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

n = n + 1 ReDim Preserve Mas(n) Mas(n) = n + 4

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

Dim Мас( ) As String'объявление динамического массива

Затем, в момент, когда необходимо распределить под него память, используется оператор ReDim:

ReDim Мас(9) ' или ReDim Preserve Мас(9)

Второй вариант используется для изменения размера массива и для сохранения содержимого.

На рис. 4.7.4-7, рис. 4.7.4-9 и рис. 4.7.4-10 приведены примеры программных кодов, использующие динамические массивы.

Примера 4.7.4-1

Примера 4.7.4-2

Пример 4.7.4-3. Разработать процедуру-Function, которая находит максимальное значения элементов массива t().

Схема алгоритма и программный код приведены на рис. 4.7.4-3.

Sub Pr743(ByRef t() As Double) As Double Dim i, n, j, k As Integer Dim xmax As Single n = UBound(t) xmax = x(0) For i = 1 To n If x(i) > xmax Then xmax = x(i) End If Next i Return xmax End Sub

Рис. 4.7.4-3. Схема алгоритма и программный код процедуры Pr743()

Примера 4.7.4-3

Примера 4.7.4-4

Примера 4.7.4-5

Для того чтобы переставить целые элементы в начало массива, в переменной k будем хранить номер элемента, в который переписывается очередное целое значение. Чтобы определить, является ли очередной элемент массива целым числом, проводится сравнение разности значения целой части очередного элемента и значения очередного элемента массива c(i) с нулем.

Целая часть значения c(i) выделяется с помощью функции Fix(). Если очередной элемент массива c(i) содержит целое значение, то производится обмен значений двух элементов массива c(k) и c(i) c помощью temp.

Схема алгоритма и программа приведены на рис. 4.7.4-5.

Пример 4.7.4-6. Разработать процедуру-Sub, в которой необходимо сформировать массив c(), по следующему правилу:

Схема алгоритма и программный код приведены на рис. 4.7.4-6.

Sub Pr746(ByRef c( )As Single) Dim i, k As Integer For i = 0 To UBound( c ) If i < 5 Then c(i) = (i^3 - 4)/(i + 1) Else c(i) = (i^2 - 36) / i End If Next i End Sub Private Sub Button1_Click(…) Dim с(9) As Single Pr746(с) vivodSngMac17(с, ListBox1) End Sub

Рис. 4.7.4-6. Схема алгоритма и программный код процедуры Pr746()

Примера 4.7.4-6

Пример 4.7.4-7. Разработать процедуру-Sub, в которой необходимо сформировать массив y(), переписав в него положительные элементы исходного массива x().

Sub Pr747(ByRef x() As Single, _ ByRef y() As Single) Dim i, n As Integer For i = 0 To UBound(x) If x(i) > 0 Then ReDim Preserve y(n) y(n) = x(i) : n = n + 1 End If Next i End Sub Private Sub Button1_Click(…) Dim x( ), y( ) As Single vvodSngMac15(x) vivodSngMac173(x, ListBox1) Pr747(x, y) vivodSngMac17(y, ListBox2) End Sub

Рис. 4.7.4-7. Схема алгоритма и программный код процедуры Pr747()

Пример 4.7.4-7

Для решения поставленной задачи необходимо проверить знак у всех элементов массива х(). При этом текущий индекс n формируемого массива y() меняется независимо от индекса i исходного массива х(). Индекс n увеличивается на единицу только при появлении положительного элемента х().

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

Схема алгоритма и программный код приведены на рис. 4.7.4-7.

Пример 4.7.4-8. Разработать процедуру-Sub, в которой необходимо из двух исходных массивов p() и r() с одинаковым числом элементов получить массив v() путем последовательного попарного переписывания в него элементов массивов p() и r().

В данной задаче для формирования массива v() используется переменная k, которая представляет собой номер очередного элемента массива v(). В цикле одновременно заполняются два элемента массива v(): в элемент с номером k переписывается i-й элемент из массива p(), а в элемент с номером (k+1) переписывается i-й элемент из массива r().

На рис. 4.7.4-8 приведены алгоритм и процедура и решения задачи.

Sub Pr748(ByRef p() As Single, _ ByRef r() As Single, ByRef v() As Single) Dim i, k As Integer For i = 0 To UBound(p) v(k) = p(i) v(k + 1) = r(i) k = k + 2 Next End Sub Private Sub Button1_Click(…) Dim p(), r(), v() As Single vvodSngMac15(p) vivodSngMac17(p, ListBox1) vvodSngMac15(r) vivodSngMac17(r, ListBox2) Pr748(p, r, v) vivodSngMac17(v, ListBox3) End Sub

Рис. 4.7.4-8. Схема алгоритма и программный код процедуры Pr748()

Пример 4.7.4-8

Пример 4.7.4-9

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

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

быть реализован с помощью внешнего итеративного (не регулярного) цикла.

Ввод исходного одномерного массива случайными числами из диапазона [-10;5] осуществляет процедура vvod(), а вывод массива на форму в элемент управления ListBox осуществляет процедура vivod(), которая по вычисляемому методом Length количеству элементов массива проводит проверку, не является ли выводимый массив пустым.

На рис. 4.7.4-9 приведены алгоритм и программа решения задачи.

Пример 4.7.4-10

Решения задачи заключается в последовательном сравнении каждого элемента исходного массива со всеми остальными. В цикле происходит формирование массива x(j). Если элемент массива x(i) равен элементу x(j), то j-й элемент удаляется, а длина массива уменьшается на единицу.

Алгоритм «сжатия» для получения массива с уникальными элементами и программа, реализующая данный алгоритм, приведены на рис. 4.7.4-10.

Пример 4.7.4-11

Суть этого метода сортировки состоит в следующем.

Сортировка элементов массива по убыванию производится с помощью вложенных циклов. Сначала осуществляется поиск наибольшего элемента массива и его индекса среди всех элементов, начиная с 1-го. Найденный максимальный элемент меняется с первым элементом. Затем вновь осуществляется поиск наибольшего элемента массива и его индекса, но уже со второго элемента, и найденный максимальный элемент обменивается со 2-м элементом, и т.д. Таким образом, число найденных максимумов (поисков) равно n. При этом во внешнем цикле, начиная с первого и до предпоследнего элемента массива, сначала очередной элемент принимается за максимальный, а затем, после выполнения внутреннего цикла, обеспечи­вается заполнение этого очередного элемента массива наибольшим «среди оставшихся элементов».

Внут­ренний цикл осуществляет перебор и сравнение последующих эле­ментов, начиная с (i+1) -го до последнего элемента массива. В результате выполнения внутреннего цикла, в переменной xmax фиксируется значение наибольшего элемента, а в переменной k - его номер. Далее, во внешнем цикле выполняется перестановка найденного максимального эле­мента на место очередного i-го элемента массива.

Рассмотрим сортировкуэлементов массивамодифицированным методом «пузырька» (прямого обмена).

Алгоритм и программа упорядочения массива по модифицированному методу «пузырька» приведены на рис. 4.7.4-12.

Sub Pr7412(ByRef x( ) As Single) Dim i, n, j As Integer Dim xx As Single n = UBound(x) For i = 0 To n-1 For j = i + 1 To n If x(i) > x(j) Then xx = x(i) x(i) = x(j) x(j) = xx End If Next j Next i End Sub

Рис. 4.7.4-12. Схема алгоритма и программный код процедуры Pr7412()

Пример 4.7.4-11

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

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

Обратите внимание, что в схемах алгоритмов обмен значениями обозначается символом «», а в примере обмен реализован через дополнительную переменную xx.

Массив - это

1) совокупность данных одного типа, объединенных общим именем

2) совокупность данных одного типа

3) набор индексированных данных

4) набор разных данных

5) набор однотипных файлов на диске

Индексом массива может быть

1) выражение любого типа

2) любое целочисленное выражение

3) только целочисленные переменные

4) переменные любого типа

Оператор Dim

1) резервирует область памяти для элементов массива

2) резервирует имя для элементов массива

3) выстраивает элементы массива в линейку

4) подсчитывает количество элементов массива

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

1) упорядочивание элементов массива либо по возрастанию, либо по убыванию

2) перезапись элементов массива в обратном порядке

3) удаление нулевых элементов массива

4) в списке нет правильного ответа

Фрагмент программы

For i = k To n - 1 a(i) = a(i+1) Next i

выполняет

1) сжатие массива «сдвигом влево»

2) сжатие массива «сдвигом вправо»

3) удаление первых K элементов массива

4) удаление последних N-K элементов массива

Фрагмент программы

i=0 Do If a(i) = 0 Then For j = i To n-1 a(j) = a(j+1) Next j n = n-1 Else i = i + 1 End If Loop While i <= n

1) удаляет из массива нулевые элементы

2) перемещает нулевые элементы влево

3) перемещает нулевые элементы вправо

4) оставляет все по-прежнему

Вопросы, подлежащие изучению

1)Способы описания и объявления одномерных массивов.

2)Возможности резервирования памяти и хранения элементов массива.

3)Способы задания значений элементам массива: присваиванием; инициализацией; вводом по запросу с клавиатуры; заполнением массива данных случайными числами в заданном диапазоне.

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

5)Методы класса Array.

6)Методы работы с элементами управления ListBox и ComboBox.

4.7.7.2. Общее задание на разработку проекта

1) Изучите вопросы программирование алгоритмов формирования и обработки одномерных массивов (Тема 7).

2)Создайте приложениес именемПроект-4.7.

3) Выберите вариант задания из табл. 4.7.7-1.

4) Разработайте графический интерфейс пользователя.

5) Разработайте схемы алгоритмов процедур пользователя в соответствии с индивидуальным заданием, предварительно проведя формализацию.

6) Напишите программный код процедур по разработанным алгоритмам.

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

8) Подготовьте входные массивы чисел для решения задачи, если исходные данные не заданы.

9) Выполните приложение и получите результат.

10) Докажите правильность результата.

Варианты индивидуальных заданий

Таблица 4.7.7-1

1) Ввести одномерный массив x= {-1.5, 0.1, 12, 0, -2.2, 0.5, -1, 0.3}. Заменить в нем все отрицательные элементы значением минимального элемента, а все положительные – максимальным значением.
2) Ввести одномерный массив a = {5, -2, 0, 3, 4, 12, 7}. Вычислить и вывести среднее арифметическое значение положительных элементов массива и заменить этим значением те элементы массива, которые больше среднего арифметического .
3) Ввести одномерный массив x = {-1.5, 0, 0.8, 2.2, 3, 0.5, 0.1}. Переписать элементы массива, принадлежащие отрезку [-1;1], в массив y и найти сумму элементов, расположенных после максимального элемента в массиве y.
4) Ввести одномерные массивы a(5) и b(5), состоящие из произвольных чисел и определить в каком из массивов больше положительных элементов. Получить и вывести новый массив с, состоящий из положительных элементов массивов a и b.
5) Ввести одномерный массив b = {7.35, 0.12, -7, 3.12, 2.87, -4.12, 5.32, 0, 6.5}. Определить и вывести максимальный элемент массива и его номер. Сформировать новый массив из элементов одного знака, число которых больше
6) Ввести одномерный массив a={2.35,-4.15,0,-3.1, 7.8, 6.3,-3.05,1.5}. Найти и вывести среднее геометрическое положительных элементов массива a и индекс элемента, наиболее близкого к среднему геометрическому. Затем упорядочить массив по убыванию.
7) Сформировать одномерный массив a(10)из случайных чисел, принадлежащих отрезку[-2, 6] и вычислить среднее арифметическое тех его элементов, значения которых не превышают заданного числа z. Заменить отрицательные элементы массива найденным средним арифметическим
8) В одномерном массиве, состоящем из 20 вещественных элементов (значения элементов массива задать случайными числами из интервала [-5, 8]), вычислить сумму элементов массива, расположенных до последнего положительного элемента. Сформировать из этих элементов новый массив.
9) Ввести произвольно одномерный массив из 10 элементов. Найти максимальный и минимальный элементы массива и поменять их местами. В полученном массиве найти количество элементов, расположенных до первого отрицательного элемента.
10) Ввести одномерные массивы x = {4.1, 16, 0, -3.2, 12}иY = {4, 5.1, 6}. Объединить их в один массив z, поместив элементы массива y между третьим и четвертым элементами массива x. В новом массиве z найти сумму элементов, расположенных до максимального элемента.
11) Ввести одномерные массивы z = {0, 1.6, 6.4, 3.8, -7, 1, -2}иa = {5,4,6.4,1}. Найти среди элементов массивов aи z два одинаковых элемента с наименьшими индексами и вывести их значения и индексы. Элементы, расположенные между найденными числами, записать в новый массив.
12) Ввести одномерный массив n = {3, 5, 7, 9, -11, 13, 15}.Переставить элементы массива n в обратном порядке и найти в нем произведение элементов, расположенных после минимального элемента.
13) Ввести одномерные массивыx = {-6, 0.5, 0.12, 13, -10.1} и y = {13, 2.1, 14, 6, -2}. Создать одномерный массив r( ) такой, что элементы с нечетными номерами являются элементами массива x, с четными номерами - массива y. Вывести массив r. В новом массиве r найти произведение элементов, расположенных до минимального элемента.
14) Ввести одномерный массив l = {13, 4, -2, 6, 7, -1, -5, 2, -3, 4}. Вычислить и вывести m[0]n[0]+m[1]n[1]+…+m[k]n[k], где m[0], m[1],…m[p] - отрицательные элементы массива l,взятые в порядке их следования; n[0], n[1],…n[q] – положительные элементы массива l, взятые в обратном порядке их следования; k = min{p,q}.
15) В одномерном массиве, состоящем из 20 вещественных элементов (значения элементов массива задать случайными числами из интервала [-3, 10]), вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами. Сформировать из этих элементов новый массив.
16) В одномерном массиве, состоящем из 15 вещественных элементов (значения элементов массива задать случайными числами из интервала [-10, 10]), вычислить произведение элементов массива, расположенных между максимальным и минимальным элементами. Сформировать из этих элементов новый массив.
17) Преобразовать одномерный массив, состоящий из 20 целых элементов (значения элементов массива задать случайными числами из интервала [-4, 7]), таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине — элементы, стоящие в четных позициях. В полученном массиве найти минимальный элемент и его номер.
18) Ввести одномерный массив m = {6, 10, 7, 14, 12, 12,-2, 3,-9, 6,-10}. Вычислить и вывести количество и сумму тех элементов массива, которые делятся на2 и не делятся на 3. Сформировать из этих чисел массив k.
19) В одномерном массиве, состоящем из 20 элементов целого типа (значения элементов массива задать случайными числами из интервала [-15, 15]), вычислить сумму элементов массива, расположенных между первым и последним положительными элементами. Сформировать из этих элементов новый массив
20) Ввести одномерный массив l = {7, 6, 15, 17, 12, -12, 4, 0, -10, -22}. Заменить в массиве нулями те элементы, модуль которых при делении на 5 дает в остатке 2. В полученном массиве найти максимальный элемент и его номер.
21) Ввести одномерный массив k = {1, 2, 3, 4, 6, 5, 8, 9, 10}. Если элементы массива образуют возрастающую последовательность вывести сообщение "ДА"; в противном случае - сообщение "НЕТ". Сжать массив, удалив из него все элементы, принадлежащие отрезку [a, b].
22) Ввести упорядоченный массив q = {1.5, 2, 3.1, 4.2, 6, 7.5, 8.3, 9}. Удалить из массива элемент с задаваемым индексом k, а затем вставить элемент с вводимым значением s так, чтобы не нарушилась упорядоченность. Вывести полученный массив.
23) В одномерном массиве, состоящем из 15 вещественных элементов (значения элементов массива задать случайными числами из интервала [-7, 10]), вычислить сумму положительных элементов массива. Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 4, а потом — все остальные.
24) Ввести одномерный массив b={-15.1 ,0.8, 32.3, 7.5,-1.5, 2.4, -6.3, 15.5}. Подсчитать и вывести среднее арифметическое значение элементов массива и количество элементов, меньших среднего арифметического, записывая их в новый массив.
25) В одномерном массиве, состоящем из 20 вещественных элементов (значения элементов массива задать случайными числами из интервала [-3, 9]), вычислить сумму элементов массива, расположенных между первым и вторым отрицательными элементами. Сформировать из этих элементов новый массив
26) Ввести одномерный массив m = {14, 6, 3, 0, 7, 12, -3, 1, 5, 2}. Вычислить и вывести произведение элементов массива, кратных 3. Сформировать из этих чисел массив k
27) Ввести одномерный массив m = {-1, 0, 10, -3, -5, 6, -2, 3, 4}. Вычислить сумму элементов с нечетными номерами. Сформировать и вывести массив n, элементами которого являются индексы положительных элементов массива m.
28) Ввести два одномерных массива a= {-2, 0, -3.1, 4.6, -1}, b = {4, 7, -9.1, 1.2, -0.3}. Сформировать из элементов массивов a и b массив z. В новом массиве z найти произведение элементов, расположенных после максимального по модулю элемента.
29) В одномерном массиве, состоящем из 20 целых элементов (значения элементов массива задать случайными числами из интервала [-5, 5]), вычислить произведение элементов массива с четными номерами. Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы массива, а потом — все отрицательные.
30) Ввести одномерный массив y = {2.5, -4.9, 10.2, -7.12, 3.1, -2, 6}. Сформировать из него новый массив z, элементами которого будут являться отрицательные элементы массива y, и упорядочить по возрастанию массив z.
31) Ввести одномерный массив x = {-1, 2, 3, 4, -5, 0,17, -6, 8, 9}. Переписать в массив yподряд положительные элементы массива x. Подсчитать в массиве y количество элементов, которые являются простыми числами.
32) Ввести одномерный массив g = {-3.1, 2.8, 0, 5, 7.7, -7.5, 0, 7.6, 3, 0}.Подсчитать произведение отрицательных элементов массива. Преобразовать массив таким образом, чтобы сначала располагались все элементы равные нулю, а потом - все остальные.
33) Ввести одномерный массив k = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}. Переставить пары элементов k(i), k(i+1),где i = 0, 2, 4, 6, 8. Вывести полученный массив
34) Ввести одномерный массив x = {6,3.8, -9.3, 2.87,16, 5, 0.2, -3.1,1,10}. Сформировать массив Y, вычислив его элементы по правилу:
35) Ввести одномерный массив z = {-2, 0, 3.5, 7, -12, 5, -1, 3}. Расположить в массиве r сначала положительные элементы, а затем неположительные элементы массива z. Вывести массив r.

Содержание отчёта

1)Тема и название лабораторной работы.

2)Фамилия, имя студента, номер группы, номер варианта.

3)Задание на разработку проекта.

4)Формализация и уточнение задания.

5)Элементы, разрабатываемого проекта:

5.1) графический интерфейс пользователя;

5.2) таблица свойств объектов;

5.3) схема алгоритма решаемой задачи;

5.4) программный код проекта.

6)Результаты выполнения проектов.

7)Доказательство правильности работы программы.

4.7.7.5.Пример выполнения задания

1) Тема и название лабораторной работы:

Программирование алгоритмов формирования и обработки одномерных массивов.

Заполнение и преобразование одномерного массива различными
способами.



infonko.ru/puteshestvie-iz-peterburga-v-moskvu-an-radisheva.html infonko.ru/puteshestvie-iz-peterburga-v-moskvu.html infonko.ru/puteshestvie-k-fizicheskomu-mestu-raspolozheniya-obiteli.html infonko.ru/puteshestvie-narottama-vo-vrindavan.html infonko.ru/puteshestvie-ogranicheno-skorostyu-sveta.html infonko.ru/puteshestvie-po-cvetnim-moryam.html infonko.ru/puteshestvie-po-miru-vikinomiki.html infonko.ru/puteshestvie-po-telu-metod-iscelyayushego-osvobozhdeniya.html infonko.ru/puteshestvie-s-grudnim-rebenkom.html infonko.ru/puteshestvie-shri-dzhahnavi-vo-vrindavan.html infonko.ru/puteshestvie-sv-olgi-v-konstantinopol.html infonko.ru/puteshestvie-v-poiskah-znaniya.html infonko.ru/puteshestvie-v-proshloe-po-etoj-zhizni.html infonko.ru/puteshestvie-v-prostranstvo-intuicii.html infonko.ru/puteshestvie-v-stranu-dorozhnih-znakov.html infonko.ru/puteshestvie-v-svyashennoobiteli.html infonko.ru/puteshestvii-1-kategorii-slozhnosti.html infonko.ru/puteshestviya-i-vasha-sistema-podderzhki-uspeha.html infonko.ru/puteshestviya-vne-tela-vospominaniya.html infonko.ru/puteshestvuem-po-carstvu-cveta-delaem-otkritiya.html