Advertisement
kon9wa88

9 билет

Jan 16th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Public Class Form1
  2.  
  3.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  4.         Dim a(,), m, n As Integer
  5.         mat(m, n, a)
  6.         pech(m, n, a, ListBox1)
  7.         TextBox1.Text = Val(nomer(m, n, a))
  8.         obmen(m, n, a)
  9.         pech(m, n, a, listbox2)
  10.     End Sub
  11.  
  12.     Private Sub mat(ByRef m As Integer, ByRef n As Integer, ByRef matr(,) As Integer) 'ввод матрицы
  13.        Dim i, j As Integer
  14.         m = Val(InputBox("число строк"))
  15.         n = Val(InputBox("число столбцов"))
  16.         ReDim matr(m - 1, n - 1)
  17.         For i = 0 To m - 1
  18.             For j = 0 To n - 1
  19.                 matr(i, j) = Val(InputBox("matr(" + Str(i) + "," + Str(j) + ")="))
  20.             Next
  21.         Next
  22.     End Sub
  23.  
  24.     Private Sub pech(ByVal m As Integer, ByVal n As Integer, ByVal matr(,) As Integer, ByRef lst As ListBox) 'печать матрицы
  25.        Dim i, j As Integer, s As String
  26.         For i = 0 To m - 1
  27.             s = ""
  28.             For j = 0 To n - 1
  29.                 s = s + Str(matr(i, j)) + vbTab
  30.             Next
  31.             lst.Items.Add(s)
  32.         Next
  33.     End Sub
  34.  
  35.  
  36.     Private Function kolvo(ByVal k As Integer, ByVal n As Integer, ByVal matr(,) As Integer) As Integer 'считат количество нулей в строке k (kol)
  37.        Dim j, kol As Integer
  38.         kol = 0
  39.         For j = 0 To n - 1
  40.             If matr(k, j) = 0 Then kol = kol + 1
  41.         Next
  42.         Return kol
  43.     End Function
  44.  
  45.     Private Function nomer(ByVal m As Integer, ByVal n As Integer, ByVal matr(,) As Integer) As Integer 'ищет номер строки с максимальным количеством нулей (imax)
  46.        Dim max, imax, k As Integer : max = -1
  47.         For k = 0 To m - 1
  48.             If kolvo(k, n, matr) > max Then
  49.                 max = kolvo(k, n, matr)
  50.                 imax = k + 1
  51.             End If
  52.         Next
  53.         Return imax
  54.     End Function
  55.  
  56.     Private Function proverka(ByVal m As Integer, ByVal n As Integer, ByVal matr(,) As Integer) As Boolean 'проверяет, есть ли в матрице нули, если есть то принимает значение false
  57.        Dim i, j As Integer
  58.         proverka = True
  59.         For i = 0 To m - 1
  60.             For j = 0 To n - 1
  61.                 If matr(i, j) = 0 Then proverka = False
  62.             Next
  63.         Next
  64.     End Function
  65.  
  66.     Private Sub obmen(ByVal m As Integer, ByVal n As Integer, ByRef matr(,) As Integer) 'меняет местами последнюю строку и строку с максимальным количеством нулей
  67.        Dim i, j, buf, imax As Integer
  68.         imax = nomer(m, n, matr)
  69.         If imax = m Or proverka(m, n, matr) = False Then
  70.             MsgBox("последняя и с макс колвом 0 одно и то же или нулей нет")
  71.         Else
  72.             For j = 0 To n - 1
  73.                 buf = matr(imax - 1, j)
  74.                 matr(imax - 1, j) = matr(n - 1, j)
  75.                 matr(n - 1, j) = buf
  76.             Next
  77.         End If
  78.     End Sub
  79. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement