15. Составьте подпрограмму, заменяющую все отрицательные элементы исходной матрицы их модулями и подсчитывающую число таких замен. Примените эту подпрограмму для заданных матриц Т1 и Т2, выведите общее число выполненных замен, причем в случае совпадения числа замен с общим числом элементов в матрице, предусмотрите вывод соответствующего поясняющего текста.
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim T1(,) As Single, T2(,) As Single Dim i, j, ma, na, mb, nb, zama, zamb As Integer
TextBox1.Clear() ma = InputBox("Введите количество строк в матрице Т1") na = InputBox("Введите количество столбцов в матрице Т1")
ReDim T1(ma, na) For i = 1 To ma For j = 1 To na T1(i, j) = InputBox("T1(" & i & "," & j & ")=?") Next Next
mb = InputBox("Введите количество строк в матрице Т2") nb = InputBox("Введите количество столбцов в матрице Т2")
ReDim T2(mb, nb) For i = 1 To mb For j = 1 To nb T2(i, j) = InputBox("T2(" & i & "," & j & ")=?") Next Next
Zamena(T1, ma, na, zama) Zamena(T2, mb, nb, zamb)
End Sub Private Sub Zamena(ByRef M(,) As Single, ByVal mm As Integer, ByVal nn As Integer, ByRef kolzam As Integer) Dim k, l, kol As Integer
kol = 0 For k = 1 To mm For l = 1 To nn If M(k, l) < 0 Then M(k, l) = Math.Abs(M(k, l)) kol = kol + 1 End If Next Next kolzam = kol End Sub End Class
16. Составьте подпрограмму для замены всех отрицательных элементов вектора их модулями и подсчета числа таких замен. Примените эту подпрограмму к каждому из двух заданных векторов А и В. Если окажется, что число замен в векторе А больше 5, выведите этот измененный вектор, иначе – выведите вектор В.
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A() As Single, B() As Single Dim i, ma, mb, zama, zamb As Integer
TextBox1.Clear() ma = InputBox("Введите количество элементов в векторе А") ReDim A(ma) For i = 1 To ma A(i) = InputBox("A(" & i & ")=?") Next
mb = InputBox("Введите количество элементов в векторе В") ReDim B(mb) For i = 1 To mb B(i) = InputBox("B(" & i & ")=?") Next
Zamena(A, ma, zama) Zamena(B, mb, zamb) If zama > 5 Then TextBox1.AppendText(" Число замен в А больше 5. Вектор А: ") For i = 1 To ma TextBox1.AppendText(Str(A(i)) + " ") Next Else TextBox1.AppendText(" Вектор В: ") For i = 1 To mb TextBox1.AppendText(Str(B(i)) + " ") Next End If
End Sub Private Sub Zamena(ByRef M() As Single, ByVal mm As Integer, ByRef kolzam As Integer) Dim k, kol As Integer
kol = 0 For k = 1 To mm If M(k) < 0 Then M(k) = Math.Abs(M(k)) kol = kol + 1 End If Next kolzam = kol End Sub
End Class
17. Составьте функцию, принимающую значение True, если элементы главной диагонали квадратной матрицы расположены в ней в порядке возрастания их значений, и False– в противном случае. Если все элементы главной диагонали любой из заданных матриц А и В расположены по возрастанию, увеличьте элементы каждой строки этой матрицы на соответствующий элемент главной диагонали, в противном случае выведите сообщение "Условие нарушено". Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim A(,) As Single, B(,) As Single Dim i, j, ma, mb As Integer Dim fla, flb As Boolean Dim s As Single
TextBox1.Clear() ma = InputBox("Введите размерность матрицы А") ReDim A(ma, ma) For i = 1 To ma For j = 1 To ma A(i, j) = InputBox("A(" & i & "," & j & ")=?") Next Next
mb = InputBox("Введите размерность матрицы В") ReDim B(mb, mb) For i = 1 To mb For j = 1 To mb B(i, j) = InputBox("B(" & i & "," & j & ")=?") Next Next fla = Diag(A, ma) flb = Diag(B, mb)
If fla Then For i = 1 To ma s = A(i, i) For j = 1 To ma A(i, j) = A(i, j) + s Next Next TextBox1.AppendText("Для А условие выполнено. ") Else TextBox1.AppendText("Для А условие нарушено. ") End If
If flb Then For i = 1 To mb s = B(i, i) For j = 1 To mb B(i, j) = B(i, j) + s Next Next TextBox1.AppendText("Для В условие выполнено. ") Else TextBox1.AppendText("Для B условие нарушено. ") End If End Sub
Private Function Diag(ByRef M(,) As Single, ByVal mm As Integer) As Boolean Dim k As Integer
Diag = True For k = 1 To mm - 1 If M(k, k) >= M(k + 1, k + 1) Then Diag = False End If Next Return Diag End Function End Class
| 18. Составьте функцию, принимающую значение True, если все элементы главной диагонали квадратной матрицы равны между собой, и False – в противном случае. Заданы матрицы А и В. Для каждой из них следует проделать следующее. Если элементы главной диагонали матрицы равны между собой, увеличьте каждый элемент матрицы на значение элемента главной диагонали. В противном случае выведите сообщение "Элементы не совпадают".
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A(,) As Single, B(,) As Single Dim i, j, ma, mb As Integer Dim fla, flb As Boolean Dim s As Single
TextBox1.Clear() ma = InputBox("Введите размерность матрицы А") ReDim A(ma, ma) For i = 1 To ma For j = 1 To ma A(i, j) = InputBox("A(" & i & "," & j & ")=?") Next Next
mb = InputBox("Введите размерность матрицы В") ReDim B(mb, mb) For i = 1 To mb For j = 1 To mb B(i, j) = InputBox("B(" & i & "," & j & ")=?") Next Next fla = Diag(A, ma) flb = Diag(B, mb)
If fla Then For i = 1 To ma s = A(i, i) For j = 1 To ma A(i, j) = A(i, j) + s Next Next TextBox1.AppendText("Для А условие выполнено. ") Else TextBox1.AppendText("В А элементы не совпадают. ") End If
If flb Then For i = 1 To mb s = B(i, i) For j = 1 To mb B(i, j) = B(i, j) + s Next Next TextBox1.AppendText("Для В условие выполнено. ") Else TextBox1.AppendText("В матрице В элементы не совпадают. ") End If
End Sub Private Function Diag(ByRef M(,) As Single, ByVal mm As Integer) As Boolean Dim k As Integer
Diag = True For k = 1 To mm - 1 If M(k, k) <> M(k + 1, k + 1) Then Diag = False End If Next Return Diag End Function
End Class 19. Составьте функцию для определения минимального элемента матрицы. Применяя эту функцию, определите для каждой из заданных матриц А и В значение минимального элемента и, если оно положительно, увеличьте каждый элемент главной диагонали на модуль этого значения. Иначе выведите сообщение: «Минимальный <= 0».
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A(,) As Single, B(,) As Single Dim i, j, ma, mb As Integer Dim mina, minb As Single
TextBox1.Clear() ma = InputBox("Введите размерность A")
ReDim A(ma, ma) For i = 1 To ma For j = 1 To ma A(i, j) = InputBox("A(" & i & "," & j & ")=?") Next Next
mb = InputBox("Введите размерность B")
ReDim B(mb, mb) For i = 1 To mb For j = 1 To mb B(i, j) = InputBox("B(" & i & "," & j & ")=?") Next Next
mina = minmatr(A, ma) If mina > 0 Then For i = 1 To ma A(i, i) = A(i, i) + Math.Abs(mina) Next TextBox1.AppendText("Для А главн. диагональ увеличина на " + Str(mina)) Else TextBox1.AppendText("Для А минимальный <=0.") End If
minb = minmatr(B, mb) If minb > 0 Then For i = 1 To ma B(i, i) = B(i, i) + Math.Abs(minb) Next TextBox1.AppendText(" Для B главн. диагональ увеличина на " + Str(minb)) Else TextBox1.AppendText(" Для B минимальный <=0.") End If
End Sub Private Function minmatr(ByRef M(,) As Single, ByVal mm As Integer) As Single Dim k, l As Integer
minmatr = M(1, 1) For k = 1 To mm For l = 1 To mm If M(k, l) < minmatr Then minmatr = M(k, l) End If Next Next Return minmatr End Function End Class 20. Составьте функцию для определения максимального элемента матрицы. Используя эту функцию, определите для каждой из заданных матриц А и В значение максимального элемента и, если оно больше заданной величины Н, извлеките квадратный корень из значения каждого элемента первой строки матрицы. В противном случае выведите сообщение: "Значение не предельно"
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A(,) As Single, B(,) As Single Dim i, j, ma, mb As Integer Dim maxa, maxb, H As Single
TextBox1.Clear() ma = InputBox("Введите размерность A")
ReDim A(ma, ma) For i = 1 To ma For j = 1 To ma A(i, j) = InputBox("A(" & i & "," & j & ")=?") Next Next
mb = InputBox("Введите размерность B") ReDim B(mb, mb) For i = 1 To mb For j = 1 To mb B(i, j) = InputBox("B(" & i & "," & j & ")=?") Next Next H = InputBox("Введите H")
maxa = maxmatr(A, ma) If maxa > H Then For i = 1 To ma A(1, i) = Math.Sqrt(Math.Abs(A(1, i))) Next TextBox1.AppendText("Для А извлекли корни из модуля знач. элем. строки. ") Else TextBox1.AppendText("Для А значение не предельно. ") End If
maxb = maxmatr(B, mb) If maxb > H Then For i = 1 To mb B(1, i) = Math.Sqrt(Math.Abs(B(1, i))) Next TextBox1.AppendText("Для B извлекли корни из модуля знач. элем. строки. ") Else TextBox1.AppendText("Для B значение не предельно. ") End If
End Sub Private Function maxmatr(ByRef M(,) As Single, ByVal mm As Integer) As Single Dim k, l As Integer
maxmatr = M(1, 1) For k = 1 To mm For l = 1 To mm If M(k, l) > maxmatr Then maxmatr = M(k, l) End If Next Next Return maxmatr End Function
End Class.
21. Составьте функцию для вычисления среднего арифметического значения элементов главной диагонали квадратной матрицы. Используя эту функцию для двух заданных матриц А и В, выведите первую строку матрицы, если среднее арифметическое значение элементов ее главной диагонали положительно. В противном случае выведите сообщение «Условие не выполнено».
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A(,) As Single, B(,) As Single Dim i, j, ma, mb As Integer Dim sra, srb As Single
TextBox1.Clear() ma = InputBox("Введите размерность A")
ReDim A(ma, ma) For i = 1 To ma For j = 1 To ma A(i, j) = InputBox("A(" & i & "," & j & ")=?") Next Next
mb = InputBox("Введите размерность B") ReDim B(mb, mb) For i = 1 To mb For j = 1 To mb B(i, j) = InputBox("B(" & i & "," & j & ")=?") Next Next
sra = srar(A, ma) If sra > 0 Then TextBox1.AppendText("Первая строка матрицы А: ") For i = 1 To ma TextBox1.AppendText(Str(A(1, i)) + " ") Next Else TextBox1.AppendText("Для А условие не выполнено. ") End If srb = srar(B, mb) If srb > 0 Then TextBox1.AppendText(" Первая строка матрицы B: ") For i = 1 To mb TextBox1.AppendText(Str(B(1, i)) + " ") Next Else TextBox1.AppendText(" Для B условие не выполнено. ") End If
End Sub Private Function srar(ByRef M(,) As Single, ByVal mm As Integer) As Single Dim k As Integer
srar = 0 For k = 1 To mm srar = srar + M(k, k) Next srar = srar / mm Return srar End Function
End Class
23. Составьте подпрограмму для нахождения индексов минимального элемента квадратной матрицы. Примените эту подпрограмму для каждой из двух квадратных матриц А и В и получите для каждой матрицы вектор, элементы которого равны попарным суммам элементов строки и столбца, на пересечении которых находится минимальный элемент. Если минимальный элемент матрицы А находится на пересечении k – ой сроки и m – го столбца, то i – ый элемент искомого вектора равен aki+aim (i = 1, 2, …, n).
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A(,) As Single, B(,) As Single Dim i, j, ma, mb, k, m As Integer Dim C() As Single
TextBox1.Clear() ma = InputBox("Введите размерность A")
ReDim A(ma, ma) For i = 1 To ma For j = 1 To ma A(i, j) = InputBox("A(" & i & "," & j & ")=?") Next Next
mb = InputBox("Введите размерность B")
ReDim B(mb, mb) For i = 1 To mb For j = 1 To mb B(i, j) = InputBox("B(" & i & "," & j & ")=?") Next Next
k = 0 m = 0 Indmin(A, ma, k, m) ReDim C(ma) TextBox1.AppendText("Вектор для матрицы А: ") For i = 1 To ma C(i) = A(k, i) + A(i, m) TextBox1.AppendText(Str(C(i)) + " ") Next
k = 0 m = 0 Indmin(B, mb, k, m) ReDim C(mb) TextBox1.AppendText(" Вектор для матрицы B: ") For i = 1 To mb C(i) = B(k, i) + B(i, m) TextBox1.AppendText(Str(C(i)) + " ") Next
End Sub Private Sub Indmin(ByRef M(,) As Single, ByVal mm As Integer, ByRef kk As Integer, ByRef ll As Integer) Dim k, l As Integer Dim minmatr As Single
minmatr = M(1, 1) kk = 1 ll = 1
For k = 1 To mm For l = 1 To mm If M(k, l) < minmatr Then minmatr = M(k, l) kk = k ll = l End If Next Next End Sub End Class
24. Составьте функцию для определения индекса максимального по модулю элемента вектора. Если максимальные по модулю элементы двух заданных векторов R и T имеют равные индексы, выведите вектор R, иначе – вектор T. Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim R() As Single, T() As Single Dim ma, mb, i As Integer Dim ina, inb As Integer
TextBox1.Clear() ma = InputBox("Введите количество элементов в векторе R") ReDim R(ma) For i = 1 To ma R(i) = InputBox("R(" & i & ")=?") Next
mb = InputBox("Введите количество элементов в векторе T") ReDim T(mb) For i = 1 To mb T(i) = InputBox("T(" & i & ")=?") Next ina = Ind(R, ma) inb = Ind(T, mb) If ina = inb Then TextBox1.AppendText("Вектор R: ") For i = 1 To ma TextBox1.AppendText(Str(R(i)) + " ") Next Else TextBox1.AppendText(" Вектор T: ") For i = 1 To mb TextBox1.AppendText(Str(T(i)) + " ") Next End If
End Sub Private Function Ind(ByRef M() As Single, ByVal mm As Integer) As Integer Dim k As Integer Dim s As Single
Ind = 1 s = Math.Abs(M(1)) For k = 2 To mm If Math.Abs(M(k)) > s Then s = Math.Abs(M(k)) Ind = k End If Next Return Ind End Function End Class
25. Составьте подпрограмму, заменяющую все меньшие заданной величины элементы вектора на ноль и определяющую число таких замен. Примените эту подпрограмму для двух заданных векторов Р и С и выведите тот вектор, в котором число замен оказалось большим.
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim P() As Single, C() As Single Dim ma, mb, i As Integer Dim ina, inb As Integer Dim H As Single
TextBox1.Clear() ma = InputBox("Введите количество элементов в векторе P") ReDim P(ma) For i = 1 To ma P(i) = InputBox("P(" & i & ")=?") Next
mb = InputBox("Введите количество элементов в векторе C") ReDim C(mb) For i = 1 To mb C(i) = InputBox("C(" & i & ")=?") Next H = InputBox("Введите величину")
zamena(P, ma, H, ina) zamena(C, mb, H, inb)
If ina = inb Then TextBox1.AppendText("Равное число замен ") Else If ina > inb Then TextBox1.AppendText("В векторе Р замен больше: ") For i = 1 To ma TextBox1.AppendText(Str(P(i)) + " ") Next Else TextBox1.AppendText("В векторе C замен больше: ") For i = 1 To mb TextBox1.AppendText(Str(C(i)) + " ") Next End If End If
End Sub Private Sub zamena(ByRef M() As Single, ByVal mm As Integer, ByVal hh As Single, ByRef kolz As Integer) Dim l As Integer kolz = 0 For l = 1 To mm If M(l) < hh Then M(l) = 0 kolz = kolz + 1 End If Next End Sub End Class
26. Составьте функцию для определения минимального по модулю элемента вектора. Если минимальные по модулю элементы двух заданных векторов X и T отличаются менее чем на В, просуммируйте все положительные элементы обоих векторов. В противном случае выведите значения найденных минимальных элементов.
|
| | |