Определить количество элементов матрицы, значения которых больше заданного числа F - VB

Узнай цену своей работы

Формулировка задачи:

Народ, знаю, что вас бесят подобные темы, но прошу помогите. Начали преподавать VB6, но раньше я его не встречал. Задача такова: Дан двумерный массив размерностью N x M элементов. Определить количество элементов, значения которых больше заданного числа F. Если не сложно, пожалуйста напишите полный код с пояснениями. Массив рандомный. Заранее спасибо.

Решение задачи: «Определить количество элементов матрицы, значения которых больше заданного числа F»

textual
Листинг программы
Option Explicit
Option Base 1
Const r = 90
Const cc = "Дан двумерный массив размерностью N x M элементов.ѓОпределить количество элементов, значения которых больше заданного числа F. "
Dim WithEvents cb As CommandButton, WithEvents tx As TextBox, Matrix(), i&, j&, l&, t&, w&, h&, ¦&, N&, M&, F&, v
 
Private Sub Run()
    'Выполнение задачи
    v = 0
    For i = 1 To M: For j = 1 To N
        With Controls("®" & j & "¦" & i)
             .FontBold = IIf(Matrix(j, i) > F, 1, 0)
             v = v + Abs(.FontBold)
        End With
    Next: Next
    result = "Всего найденно: " & v
End Sub
 
Private Sub tx_Change()
    'Контроль ввода чисел в текстовые поля
    With tx
        If IsNumeric(.Text) Then
        Select Case Mid$(.Name, 3)
        Case 1, 2
            If .Text < 1 Or .Text > 15 Then tx_0 1
        End Select
        Else: tx_0 IIf(Mid$(.Name, 3) > 2, 0, 1)
        End If
        .Text = Val(.Text)
    End With
End Sub
 
 
Private Sub Cr()
    'Создание (пересоздание) новой матрицы
    ac N, "tx1", M, "tx2", F, "tx3"
    Erase Matrix: result = ""
    For Each v In Controls
        If Left$(v.Name, 1) = "®" Then Controls.Remove v
    Next
    ReDim Preserve Matrix(N, M)
    With Controls("©"): t = .Top + .Height + r: End With
    a l, r, w, r * 4, h, r * 4
    For i = 1 To M: For j = 1 To N
            Matrix(j, i) = Rnd * 200 \ 2
            With Controls.Add("vb.CommandButton", "®" & j & "¦" & i)
                .Move l, t, w, h: a l, l + w
                .Caption = Matrix(j, i)
                .Visible = 1
            End With
    Next: a l, r, t, t + h: Next
    Controls("±").Enabled = 1
End Sub
 
Private Sub cb_Click()
    'Вызов команд по нажатию кнопок
    With cb
        Select Case Left$(.Name, 1)
        Case "±": Run
        Case "©": Cr
        Case "®"
            v = Split(Mid$(.Name, 2), "¦")
            .Caption = Rnd * 200 \ 2
            Matrix(v(0), v(1)) = .Caption
        End Select
    End With
End Sub
 
 
Private Sub Form_Load()
    'Загрузка элементов
    a l, r, t, r
    With Controls.Add("vb.label", "ї"): .AutoSize = 1: .Visible = 1: End With
    With Controls.Add("vb.label", "ђ"): .AutoSize = 1: .Caption = Replace(cc, "ѓ", vbLf): .Move l, t: a t, t + .Height + r: .Visible = 1: End With
    With Controls.Add("vb.label", "ъ"): .AutoSize = 1: .Caption = "Ввод N x M и F": .Move l, t: a l, l + .Width + r: .Visible = 1: End With
    For i = 1 To 3
        With Controls.Add("vb.TextBox", "tx" & i)
            .Move l, t, .Height, .Height \ 2: l = l + .Width: h = .Height
            .Text = Choose(i, 15, 3, 50): .Visible = 1
        End With
    Next
    a l, l + r, i, 1
    For Each v In Array("Создать", "Вычислить")
        With Controls.Add("vb.CommandButton", Choose(i, "©", "±"))
                 .Move l, t, .Width, h: a l, l + .Width, i, i + 1
                .Caption = v:   .Visible = 1:   .Enabled = Len(v) <> 9
        End With
    Next
    Caption = "Matrix": WindowState = 2: Randomize Timer
End Sub
 
 
Sub tx_0(Optional ByVal N): tx.Text = N: tx.SelLength = 100: End Sub
Private Sub tx_LostFocus(): LostFocus: End Sub
Private Sub cb_LostFocus(): LostFocus: End Sub
Private Sub Form_Activate(): Set tx = Controls("tx1"): tx.SetFocus: End Sub
Private Sub a(ParamArray e()): For ¦ = 1 To UBound(e) Step 2: e(¦ - 1) = e(¦): Next: End Sub
Private Sub LostFocus(): On Error Resume Next: Set tx = ActiveControl: Set cb = ActiveControl: End Sub
Private Sub ac(ParamArray e()): For i = 1 To UBound(e) Step 2: e(i - 1) = Controls(e(i)): Next: End Sub
Private Property Let result(ByVal nv As String): With Controls("ї"):   .Move r, t + r: .Caption = nv: End With: End Property

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы