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

 

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.

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

 


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

 

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) Каким образом объявляются одномерные массивы в программах?

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: