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

 

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

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

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

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

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

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

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

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

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

· вводом с клавиатуры;

· с помощью датчика случайных чисел;

· формированием по формуле.

Обработка исходного массива осуществляться одним из вариантов:

· нахождение максимального элемента в двумерном массиве;

· нахождение суммы всех элементов двумерного массива;

· нахождение суммы элементов двумерного массива по строкам;

· нахождение суммы элементов двумерного массива по столбцам;

· нахождение суммы элементов главной диагонали двумерного массива;

· нахождение суммы элементов побочной диагонали двумерного массива.

 

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

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

Форма приложения может иметь такой же вид, как на рис. 4.8.4-1.

 

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

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

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

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

 

Таблица. 4.8.4-2

Имя объекта Свойство Значение свойства
Form1 Text Form1
Label3 Font Times New Roman, Bold (Жирный), 14-point (14 пунктов)
ForeColor Синий
Name Label3
Text Изучение двумерных массивов
Label4 Font Times New Roman, Bold (Жирный), 10-point (10 пунктов)
Name Label4
Text Задание
Label5 Font Times New Roman, Bold (Жирный), 10-point (10 пунктов)
Name Label5
Text Ввести двумерный массив A(m, n) и преобразовать массив A(m,n), используя меню
Label6 Font Times New Roman, Bold (Жирный), 14-point (14 пунктов)
ForeColor Синий
Name Label6
Text Исходный массив a(m,n)
Label7 Font Times New Roman, Bold (Жирный), 14-point (14 пунктов)
ForeColor Синий
Name Label7
Text Результат:
Label8 ForeColor Red(Красный)
Name Label8
Text Задайте кол-во строк (m) и столбцов(n) массива
Label10 Font 10 пунктов
Name Label10
Text Заполнение массива
Label11 AutoSize False
ForeColor Синий
Name Label11
Text Преобразование массива
Label12 Font Times New Roman, Bold (Жирный), 10-point (10 пунктов)
Name Label12
Text m=
Label13 Font Times New Roman, Bold (Жирный), 10-point (10 пунктов)
Name Label13
Text n=
ComboBox1 Items (коллекция) Ввод массива с клавиатуры Ввод массива по генератору случайных чисел Ввод массива по формуле
Name ComboBox1
ComboBox2 Items (коллекция) Найти max элемент в массиве Найти сумму всех элементов Найти сумму элементов по строкам Найти сумму элементов по столбцам Найти сумму элементов главной диагонали Найти сумму элементов побочной диагонали
  Name ComboBox2
ListBox1 Name ListBox1
Text ListBox1
ListBox2 Name ListBox2
Text ListBox2
TextBox1 Name TextBox1
Text  
TextBox2 Name TextBox2
Text  
Button2 Name Button2
Text Выход
Button3 Name Button3
Text Повторить

 

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

Схемы отдельных алгоритмов представлены в Теме 4.8.

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

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

 

Public Class Form1 Dim a(,) As Integer 'Функция ввода данных (кол. строк и столбцов) из TextBox Function vvod(ByVal T As TextBox) As Integer Return CInt(T.Text) End Function 'Процедура вывода одномерного массива с заголовком z Sub PrintL(ByRef x() As Integer, ByVal z As String, _ ByRef LB As ListBox) Dim i As Integer LB.Items.Add(" ") LB.Items.Add(z) Dim y As String = "" For i = 0 To UBound(x) y = y + CStr(x(i)) + Space(4) Next i LB.Items.Add(y) End Sub ' Процедура вывода результата с заголовком z в ListBox Sub vivodlist(ByVal c As Integer, ByVal z As String, _ ByRef Lb As ListBox) Lb.Items.Add(" ") z = z + CStr(c) Lb.Items.Add(z) End Sub 'Процедура форматированного вывода матрицы в ListBox Sub PrintMatr(ByRef x(,) As Integer, ByRef LB As ListBox) Dim i, j, m, n As Integer Dim z, z1 As String m = x.GetLength(0) - 1 n = x.GetLength(1) - 1 LB.Items.Clear() For i = 0 To m z = "" For j = 0 To n z1 = Format(x(i, j), "000") If x(i, j) < 0 Then z1 = Space(2) + z1 Else z1 = Space(3) + z1 End If z = z + z1 Next j LB.Items.Add(z) Next i End Sub 'Процедура ввода матрицы (по индексу выбранной 'строки из ComboBox1) Sub vvodMatr(ByRef a(,) As Integer, _ ByVal index As Integer) Dim i, j, m, n As Integer Dim r1, r2 As String Dim y As String m = a.GetLength(0) - 1 n = a.GetLength(1) - 1 Select Case index Case 0 'Ввод элементов массива с клавиатуры For i = 0 To m For j = 0 To n r1 = Str(i): r2 = Str(j) y = InputBox("элемент массива a(" + r1 + _ "," + r2 + "=", _ "Ввод эначений элементов массива A()") a(i, j) = CInt(y) Next j Next i Case 1 'Формирование массива с помощью случайных чисел For i = 0 To m For j = 0 To n a(i, j) = CInt(Rnd(1) * 100 - 50) Next j Next Case 2 'Формирование массива по заданной формуле For i = 0 To m For j = 0 To n a(i, j) = (i + j) * 25 - 150 Next j Next i End Select End Sub ' Вычисление суммы эл-тов побочной диагонали матрицы Sub m5(ByRef a(,) As Integer, ByRef pob As Integer, _ ByRef flag As Integer) Dim RawCount, ColumnCount As Integer Dim i, mm, nn As Integer RawCount = a.GetLength(0) ColumnCount = a.GetLength(1) pob = 0 flag = 0 mm = RawCount - 1 nn = ColumnCount - 1 If nn = mm Then For i = 0 To mm pob = pob + a(i, mm - i) Next i Else flag = 1 'количество строк и столбцов не равны End If End Sub ' Вычисление суммы эл-тов главной диагонали Sub m4(ByRef a(,) As Integer, ByRef Glav As Integer, _ ByRef flag As Integer) Dim RawCount, ColumnCount As Integer Dim i, nn, mm As Integer RawCount = a.GetLength(0) ColumnCount = a.GetLength(1) Glav = 0 flag = 0 mm = RawCount - 1 nn = ColumnCount - 1 If nn = mm Then For i = 0 To mm Glav = Glav + a(i, i) Next i Else flag = 1 'количество строк и столбцов не равны End If End Sub 'Вычисление сумм элементов матрицы по столбцам ' (создание одномерного массива) Public Sub m3(ByRef a(,) As Integer, _ ByRef stolb() As Integer) Dim RawCount, ColumnCount As Integer Dim i, j, nn, mm As Integer RawCount = a.GetLength(0) ColumnCount = a.GetLength(1) mm = RawCount - 1 nn = ColumnCount - 1 ReDim stolb(0 To nn) For j = 0 To nn stolb(j) = 0 For i = 0 To mm stolb(j) = stolb(j) + a(i, j) Next i Next j End Sub ' Вычисление сумм элементов матрицы по строкам ' (создание одномерного массива) Public Sub m2(ByRef a(,) As Integer, _ ByRef strok() As Integer) Dim RawCount, ColumnCount As Integer Dim i, j, mm, nn As Integer RawCount = a.GetLength(0) ColumnCount = a.GetLength(1) mm = RawCount - 1 nn = ColumnCount - 1 ReDim strok(0 To mm) For i = 0 To mm strok(i) = 0 For j = 0 To nn strok(i) = strok(i) + a(i, j) Next j Next i End Sub ' Вычисление суммы всех элементов матрицы Public Sub m1(ByRef a(,) As Integer, ByRef sum As Integer) Dim RawCount, ColumnCount As Integer Dim i, j, mm, nn As Integer RawCount = a.GetLength(0) ColumnCount = a.GetLength(1) sum = 0 mm = RawCount - 1 nn = ColumnCount - 1 For i = 0 To mm For j = 0 To nn sum = sum + a(i, j) Next j Next i End Sub ' Поиск максимального элемента матрицы и его индексов Public Sub m0(ByRef a(,) As Integer, ByRef max As Integer,_ ByRef imax As Integer, ByRef jmax As Integer) Dim RawCount, ColumnCount As Integer Dim i, j, nn, mm As Integer RawCount = a.GetLength(0) ColumnCount = a.GetLength(1) mm = RawCount - 1 nn = ColumnCount - 1 max = a(0, 0) imax = 0 jmax = 0 For i = 0 To mm For j = 0 To nn If a(i, j) > max Then max = a(i, j) imax = i jmax = j End If Next j Next i End Sub Private Sub Button1_Click(sender As Object, _ e As EventArgs) Handles Button1.Click ListBox1.Items.Clear() ListBox2.Items.Clear() TextBox1.Text = "" TextBox2.Text = "" End Sub Private Sub ComboBox1_SelectedIndexChanged _ (sender As Object, e As EventArgs) _ Handles ComboBox1.SelectedIndexChanged Dim index, m, n As Integer m = vvod(TextBox1) 'кол-во строк массива n = vvod(TextBox2) 'кол-во столбцов массива ReDim a(0 To m, 0 To n) ListBox1.Items.Clear() ListBox2.Items.Clear() index = ComboBox1.SelectedIndex 'индекс выбранного элемента из ComboBox1 ' (выбор способа ввода матрицы) vvodMatr(a, index) PrintMatr(a, ListBox1) End Sub Private Sub ComboBox2_SelectedIndexChanged _ (sender As Object, e As EventArgs) _ Handles ComboBox2.SelectedIndexChanged Dim s, f As Integer Dim imax, jmax As Integer Dim z As String = "" Dim mas() As Integer Select Case ComboBox2.SelectedIndex Case 0 ' Поиск максимального элемента в матрице m0(a, s, imax, jmax) z = " Max элемент массива а()=" vivodlist(s, z, ListBox2) z = " Номер строки элемента =" vivodlist(imax, z, ListBox2) z = " Номер столбца элемента =" vivodlist(jmax, z, ListBox2) Case 1 ' Вычисление суммы всех элементов массива m1(a, s) z = " Сумма элементов массива а()=" vivodlist(s, z, ListBox2) Case 2 ' Вычисление сумм элем. массива по строкам m2(a, mas) z = " Сумма по строкам массива а()=" PrintL(mas, z, ListBox2) Case 3 ' Вычисление сумм элем. массива по столбцам m3(a, mas) z = " Сумма элементов массива a() по столбцам " PrintL(mas, z, ListBox2) Case 4 ' Вычисление суммы элем.в главной диагонали m4(a, s, f) If f = 0 Then z = " Сумма элементов главной диагонали =" Else z = "Кол. строк не равно кол. столбцов" End If vivodlist(s, z, ListBox2) Case 5 ' Вычисление суммы элем. побочной диагонали m5(a, s, f) If f = 0 Then z = " Сумма элем. побочной диагонали =" Else z = "Кол. строк не равно кол. столбцов" End If vivodlist(s, z, ListBox2) End Select End Sub End Class

 

Рис. 4.8.4-2. Программный код проекта Проект 4.8:

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

 



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



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