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