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



      Форма приложения может иметь такой же вид, как на рис. 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!