Определить количество элементов матрицы, значения которых больше заданного числа 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