Диагональ матрицы

Ответить
distress
Сообщения: 2
Зарегистрирован: 12 дек 2009, 16:57

12 дек 2009, 17:00

вот собственно задача, подскажите как записать в vb.net порядок возрастания элементов
Составьте функцию, принимающую значение True, если элементы главной диагонали квадратной матрицы расположены в ней в порядке возрастания их значений, и False– в противном случае. Если все элементы главной диагонали любой из заданных матриц А и В расположены по возрастанию, увеличьте элементы каждой строки этой матрицы на соответствующий элемент главной диагонали, в противном случае выведите сообщение "Условие нарушено".
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
посмотрите правильность кода пожалуйста
Public Class Form1
Private Sub btnПуск_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnПуск.Click
Dim a(,) As Single
Dim n As Integer, Сигнал As Boolean
txtЖурнал.Clear()
n = InputBox("n = ?")
txtЖурнал.AppendText("n = " & n & vbCrLf)
ReDim a(n, n)
Inputmatrix(a, "a")
txtЖурнал.AppendText("Матрица a" & vbCrLf)
OutputMatrix(a, txtЖурнал)
Сигнал = Сравнение(a)
If Сигнал = True Then
For i = 1 To n
For j = 1 To n
a(i, j) = a(i, j) + a(i, i)
Next
Next
txtЖурнал.AppendText("Измененённая матрица A" & vbCrLf)
OutputMatrix(a, txtЖурнал)
Else
txtЖурнал.AppendText("Условие нарушено")
End If
End Sub
Private Sub InputMatrix(ByRef x(,) As Single, Optional ByVal ArrayName As String = "элемент")
Dim i, j As Integer
For i = 1 To x.GetUpperBound(0)
For j = 1 To x.GetUpperBound(1)
x(i, j) = InputBox(ArrayName & "(" & i & "," & j & ") = ?")
Next
Next
End Sub
Private Sub OutputMatrix(ByVal x(,) As Single, ByVal y As TextBox)
Dim i, j As Integer
For i = 1 To x.GetUpperBound(0)
For j = 1 To x.GetUpperBound(1)
y.AppendText(x(i, j) & vbTab)
Next
y.AppendText(vbCrLf)
Next
End Sub
Private Function Сравнение(ByVal x(,) As Single) As Boolean
Dim i, j As Integer
Dim Сигнал As Boolean, max As Single
Сигнал = False
max = x(1, 1)
For i = 2 To x.GetUpperBound(0)
For j = 1 To x.GetUpperBound(1)
If x(i, i) > max Then
Сигнал = True
max = x(i, i)
Else : Сигнал = False
End If
Next
Next
Сравнение = Сигнал
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
End Class
Ответить