Найти в матрице элемент с заданной суммой цифр - VB

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

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

Створити матрицю М х N. Знайти в матриці елемент з заданою сумою цифр. Видалити стовпчик та рядок на перетині яких знаходиться даний елемент. Перевод: Создать матрицу М х N, найти в матрице элемент с заданной суммой цифр, удалить стобец и строку, на пересечении которых находиться этот элемент

Решение задачи: «Найти в матрице элемент с заданной суммой цифр»

textual
Листинг программы
Private Sub Command1_Click()
Dim M As Integer, N As Integer, a() As Single, b() As Single
Dim i As Integer, j As Integer, im As Integer, jm As Integer
Dim i2 As Integer, j2 As Integer
Dim S As Integer
 
AutoRedraw = True
Cls
M = Val(InputBox("вводимо M", , 5))
N = Val(InputBox("вводимо N", , 4))
S = Val(InputBox("вводимо число  -  суму цифр", , 3))
If M > 2 And N > 2 And S > 0 Then
 
ReDim a(M, N): ReDim b(M - 1, N - 1)
For i = 1 To M
   For j = 1 To N
      a(i, j) = Int(Rnd * 20) ' Val(InputBox("a(" & i & " ; " & j & ")"))
       Print a(i, j); "   ";
   Next j
    Print
Next i
 
re:
For i = 1 To M
   For j = 1 To N
       If im = 0 And sum_z(a(i, j)) = S Then
            im = i: jm = j
            GoTo 1
         End If
   Next j
Next i
 
If im = 0 Then
MsgBox "завершено", vbInformation
Exit Sub
End If
 
1:
i2 = 0
For i = 1 To M
            If i <> im Then
            i2 = i2 + 1: j2 = 0
               For j = 1 To N
                 If j <> jm Then
                    j2 = j2 + 1
                    b(i2, j2) = a(i, j)
                 End If
               Next j
            End If
Next i
 
 
 Print: Print "a( " & im & " ; " & jm & " ) = " & a(im, jm) & ", сума цифр рівна " & S: Print
 
For i = 1 To M - 1
    For j = 1 To N - 1
     Print b(i, j); "   ";
    Next j
 Print
Next i
 
If N > 1 And M > 1 Then
N = N - 1: M = M - 1
ReDim a(M, N): a() = b(): ReDim b(M, N)
im = 0: jm = 0
GoTo re
End If
Else
MsgBox "некоректний ввід", vbExclamation
End If
 
End Sub
Function sum_z(k As Single) As Integer
Dim l As Integer
sum_z = 0
For l = 1 To Len(Replace(CStr(k), ".", ""))
sum_z = sum_z + Val(CStr(Mid(CStr(k), l, 1)))
Next l
End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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