Графический интерфейс пользователя:
Форма приложения может иметь такой же вид, как на рис. 4.8.4-1.
Рис. П.1.8-1. Форма проекта Проект 8:
Заполнение и преобразование двумерного массива различными способами
5.2) Таблица свойств объектов:
Установите и сведите в табл. 4.8.4-2 свойства всех объектов.
Таблица. 4.8.4-2
Имя объекта | Свойство | Значение свойства | ||
Form 1 | Text | Form 1 | ||
Label 3 | 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:
Заполнение и преобразование двумерного массива различными способами
Дата добавления: 2019-07-15; просмотров: 171; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!