Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







В результате выполнения следующего фрагмента программы происходит





j = -1 For i = 0 To 10 If a(i) < 0 Then j = j + 1: b(j) = a(i)^2 End If Next i

1) формирование массива b() из квадратов отрицательных элементов массива a()

2) упорядочение массива, а() по возрастанию

3) формирование нового массив b() по возрастанию

4) формирование нового массив b() по убыванию


16.

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

 

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

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

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) Тема и название лабораторной работы:

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

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

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

Иванов И., БИН1405, вариант 13.

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

Введите значения одномерного массива натуральных чисел a(n), используя различные алгоритмы заполнения массива, и сформируйте его. Далее осуществите преобразование сформированного массива, используя различные методы обработки одномерных массивов, и вычислите одну из заданных характеристик сформированного массива

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

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

Преобразование исходного массива может осуществляться несколькими способами: сортировка по возрастанию методом «пузырька»; сортировка по убыванию методом «выбора»; удаление отрицательных элементов.


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

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

Разработайте форму приложения, которая может иметь такой же

вид, как на рис. 4.7.7-1.

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

По своим функциям список типа ComboBox совмещает функции списка ListBox и текстового поля TextBox, поэтому из списка можно не только выбирать, но и вводить данные в находящееся в верхней части поле ввода. Элементы могут добавляться в список и удаляться из него во время разработки приложения с помощью свойства Items. Программные подобные действия осуществляются с использованием методов коллекции Items (например, Add() – добавление, Remove() – удаление, Insert() – вставка), элемента управления ComboBox. Метод Clear() удаляет все элементы из списка.

Также надо обратить внимание на расположенное в окне Propertie s свойство SelectionMode. С его помощью устанавливается количество выбираемых элементов. Например, при значении этого свойства One (один) в списке можно выделить только одну строку.

Для доступа к элементам списка используется свойство Items. Значения этого свойства являются массивом, размер которого равен количеству элементов в списке, а обращение к элементу осуществляется через индекс, определяющий его положение в списке, причем нумерация начинается с нуля. Например, значение первого элемента списка будет равно ComboBox1.Items(0 ).

 

Рис. 4.7.7-1. Форма проекта Проект 7-1 :

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

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

Установите и сведите в табл. 4.7.7-2 свойства объектов.

 

Таблица 4.7.7-2

Имя объекта Свойство Значение свойства
Label1 ForeColor Red(Красный)
Font Times New Roman, Bold (Жирный), 10-point (10 пунктов)
AutoSize True
Name Label1
Text 1.
Label2 ForeColor Red(Красный)
Font Times New Roman, Bold (Жирный), 10-point (10 пунктов)
AutoSize True
Name Label2
Text  
Label3 Font Times New Roman, Bold (Жирный), 14-point (14 пунктов)
ForeColor Синий
Name Label3
Text Изучение одномерных массивов
Label5 Font Times New Roman, Bold (Жирный), 10-point (10 пунктов)
Name Label5
Text Введите одномерный массив Х(), используя различные способы заполнения и преобразуйте его, используя алгоритмы преобразования
Label8 ForeColor Red(Красный)
Name Label8
Text Задайте количество элементов массива х:
Label10 Font 10 пунктов
Name Label10
Text Заполнение массива
Label11 AutoSize False
ForeColor Синий
Name Label11
Text Преобразование массива х:
Label6 Font Times New Roman, Bold (Жирный), 10-point (10 пунктов)
Name Label6
Text Исходный массив Х
Label7 Font Times New Roman, Bold (Жирный), 10-point (10 пунктов)
Name Label7
Text Полученный массив
ComboBox1 Items (коллекция) Ввод массива с клавиатуры Ввод массива по генератору случайных чисел Ввод массива по формуле
Name ComboBox1
ComboBox2 Items (коллекция) Сортировка по возрастанию методом пузырька Сортировка по убыванию методом выбора Удаление отрицательных элементов
  Name ComboBox2
ListBox1 Name ListBox1
ListBox2 Name ListBox2
Text  
Button1 Name Button1
Text Конец задания

5.3) Схемы алгоритмов решаемой задачи:

Схемы алгоритмов отдельных процедур приведены в Теме 4.7.

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

Программный код разработанного проекта приведен на
рис. П.1.7 -2.

 


 

Option Strict On Option Explicit On 'Imports System.Math Public Class Проект7 Dim x() As Single 'Процедура ввода массива Sub vvod(ByRef x() As Single, ByVal index As Integer) Dim y, r As String Dim i As Integer Select Case index Case 0 'ввод с клавиатуры For i = 0 To UBound(x) r = Str(i) y = InputBox("элемент массива X("+ r +")=", _ "Ввод значений элементов массива X()") x(i) = CSng(Val(y)) Next i Case 1 'ввод генератором случ. чисел For i = 0 To UBound(x) x(i) = Rnd(1) * 10 - 5 Next i Case 2 'ввод по формуле For i = 0 To UBound(x) x(i) = i * 5 - 15 Next i End Select End Sub 'Процедура вывода массива Public Sub PrintL(ByRef x() As Single,ByRef LB As ListBox) Dim i As Integer Dim y As String = " " For i = 0 To UBound(x) y = y + Format(x(i), "00.00") + Space(4) Next i y = y + "------" LB.Items.Add(y) End Sub 'Процедура сортировки эл-тов массива по возрастанию Public Sub sort1(ByRef x() As Single) Dim Box As Single Dim i, j As Integer For i = 0 To UBound(x) - 1 For j = i + 1 To UBound(x) If x(i) > x(j) Then Box = x(j): x(j) = x(i): x(i) = Box End If Next j Next i End Sub 'Процедура сортировки эл-тов массива по убыванию Public Sub sort2(ByRef x() As Single) Dim i, j, m As Integer Dim xmax As Single For i = 0 To UBound(x) - 1 xmax = x(i): m = i For j = i + 1 To UBound(x) If x(j) > xmax Then xmax = x(j) m = j End If Next j x(m) = x(i) x(i) = xmax Next i End Sub 'Процедура удаления отрицательных эл-тов массива Public Sub mass_udal(ByRef x() As Single) Dim j, i, n As Integer n = UBound(x) i = 0 Do While i <= n If x(i) < 0 Then For j = i To n - 1 x(j) = x(j + 1) Next j n = n - 1 Else i = i + 1 End If Loop ReDim Preserve x(n) End Sub 'Процедура обработки события загрузки формы Private Sub Form1_Load(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles MyBase.Load Label1.Text = "Точное" + Space(3) + "москоское" + _ Space(3) & " время" Label2.Text = CStr(DateTime.Now) End Sub 'Процедура обработки события выбора элем. из ComboBox1 Private Sub ComboBox1_SelectedIndexChanged _ (ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles ComboBox1.SelectedIndexChanged Dim index, n As Integer index = ComboBox1.SelectedIndex 'индекс выбр-го эл-та ComboBox1 ListBox1.Items.Clear() ListBox2.Items.Clear() n = CInt(TextBox1.Text) 'кол=во эл-тов массива ReDim x(n) vvod(x, index) 'ввод массива в зависимости от индекса выбора PrintL(x, ListBox1) 'вывод исходного массива End Sub 'Процедура обработки события выбора элем. из ComboBox2 Private Sub ComboBox2_SelectedIndexChanged _ (ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles _ ComboBox2.SelectedIndexChanged Dim ind As Integer ind = ComboBox2.SelectedIndex ListBox2.Items.Clear() Select Case ind Case 0 sort1(x) 'вызов проц. сортировки массива по возр. Case 1 sort2(x) 'вызов проц. сортировки массива по убыв. Case 2 mass_udal(x) 'вызов проц.удаления отриц. эл-тов End Select PrintL(x, ListBox2) 'вызов проц.вывода результ. массива End Sub Private Sub Button6_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Button6.Click End End Sub End Class

 

Рис. 4.7.7. Программный код проекта Проект 7-1 :

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


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

Результаты выполнения проекта приведены на рис. 4.7.7-3.

Рис. 4.7.7-3. Результаты выполнения Проект 7-1 :

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

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

Получен исходный массив из 8 элементов: 2.06, 0.33, 0.80, -2.10, -1.98, 2.75, -4.86, 2.61, 3.14.

Удалены отрицательные элементы 2.06, 0.33, 0.80, 2.75, 2.61, 3.14.

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

 


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

 

1) Какие структуры данных известны?

2) Какую информацию должен включать оператор объявления массива?

3) Что такое массив?

4) Верно ли, что все элементы массива должны быть одного типа?

5) В чем преимущество объединения отдельных элементов в массив?

6) Какие правила объявления массива?

7) Что такое индекс массива?

8) Что такое размер массива и размерность массива?

9) Совпадает ли размерность массива с количеством элементов в нем?

10) Может ли массив содержать один элемент?

11) Может ли массив совсем не содержать элементов?

12) Что произойдет, если индекс массива выйдет за допустимые пределы?

13) Каким образом различаются два элемента массива, имеющие одинаковые значения?

14) В каком случае можно сказать, что два массива равны?

15) Каким образом можно поменять местами значения двух массивов?

16) Может ли одномерный массив иметь больше одного индекса?

17) Можно ли в качестве индекса одномерного массива использовать выражение?

18) Почему одномерный массив иногда называют списком или вектором?

19) Приведите пример массива целых чисел, массива вещественных чисел, массива строк.

20) Какими способами инициализируется массив?

21) Что такое статический массив?

22) Что такое динамический массив?

23) Как изменить размер массива, сохранив имеющиеся в нём значения?

24) Как определить размер массива в ходе выполнения программы?

25) Чем отличаются списки ListBox и ComboBox?

26) Как настраиваются свойства списков ListBox?

27) Как настраиваются свойства списков ComboBox?

28) Как добавить, изменить и удалить элемент списка?

29) Как определить элемент, выбранный пользователем?

30) Каким образом массив передается в процедуру?

31) Какие базовые алгоритмы обработки одномерных массивов известны?

32) Какие методы сортировки массивов известны?

33) В чем суть метода сортировки элементов массива выбором?

34) В чем суть метода сортировки элементов массива пузырьком?

35) Какие методы класса Array известны?

36) Каким образом объявляются одномерные массивы в программах?

 







ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...

Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.