Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Что не так? Помогите чайнику(

20K
28 апреля 2009 года
DeVOLT
39 / / 28.09.2008
Народ!!! Учусь программировать на C++ и Delphi, а тут надо написать прогу на VB, иначе меня к стенке. Программа поиска обратной матрицы

Вот Код:
Private Sub Form_Load()

Dim pMatrix(1, 1) As Double

pMatrix(0, 0) = 0.93
pMatrix(0, 1) = -0.14
pMatrix(1, 0) = -0.12
pMatrix(1, 1) = 0.9

[COLOR="Red"]MakeUnMatrix (pMatrix)[/COLOR]
End Sub

Public Sub MakeUnMatrix(ByRef pMatrix() As Double)
Dim i As Long, j As Long
Dim UnMatrix() As Double, Matrix() As Double
Dim k As Long
Dim n As Long
Matrix = pMatrix
n = UBound(Matrix, 1) + 1
If UBound(Matrix, 2) + 1 <> n Then
Err.Raise 116, "MakeUnMatrix", "No inverse matrix."
End If
ReDim UnMatrix(0 To n - 1, 0 To n - 1)
For i = 0 To n - 1
UnMatrix(i, i) = 1
Next i
'Stage 1. make the low-daig elems 0
For i = 0 To n - 1
'search for non-zero line
For j = i To n - 1
If Matrix(j, i) <> 0 Then
Exit For
End If
Next j
If j = n Then
Err.Raise 116, "MakeUnMatrix", "No inverse matrix."
End If
AddRow Matrix, UnMatrix, i, j, (1 - Matrix(i, i)) / Matrix(j, i)
Matrix(i, i) = 1

'make zeros under i,i
For j = i + 1 To n - 1
AddRow Matrix, UnMatrix, j, i, -Matrix(j, i)
Matrix(j, i) = 0
Next j
Next i

'Stage 2. Make upper diag elems 0's
For j = n - 1 To 1 Step -1
For i = 0 To j - 1
AddRow Matrix, UnMatrix, i, j, -Matrix(i, j)
Matrix(i, j) = 0
Next i
Next j

pMatrix = UnMatrix
End Sub

Private Sub AddRow(ByRef Matrix1() As Double, ByRef Matrix2() As Double, ByVal IDest As Long, ByVal ISrc As Long, Multiplier As Double)
Dim i As Long
For i = 0 To UBound(Matrix1, 2)
Matrix1(IDest, i) = Matrix1(IDest, i) + Matrix1(ISrc, i) * Multiplier
Matrix2(IDest, i) = Matrix2(IDest, i) + Matrix2(ISrc, i) * Multiplier
Next i
End Sub

Возникает ошибка (выделил красным): Type mishmatch: array or user - defined type expected
Не нравится ему массив pMatrix что я отправляю в функцию :(:(:(
[COLOR="Navy"]В чём дело? Что не так и как правильно?[/COLOR] Сами исходники функции нахождения обратной матрицы из сети и стопудово работают!!!

Я в VB полный чайник и вижу его сейчасвторой раз в жизни((( Очень надо просто...

[COLOR="Blue"]Заранее огромное спасибо за подсказки[/COLOR]
7
28 апреля 2009 года
@pixo $oft
3.4K / / 20.09.2006
Наверное,потому,что надо убрать скобки в объявлении функции MakeUnMatrix.Только возникает ошибка в строке Matrix=pMatrix,ибо в VB(ИМХО,в других языках тоже) нельзя массив массиву присваивать–надо это делать поэлементно.Надеюсь,не надо объяснять,как

Вы вообще где этот код взяли?
20K
28 апреля 2009 года
DeVOLT
39 / / 28.09.2008
С кодом разобрался, заработал, но чёт криво((( Большое спасибо [COLOR="Red"]@pixo $oft[/COLOR]
Погуглил и нашёл этот код((( больше ничего толкового и небыло(

Нет ни у кого исходничка? Нужен код функции: [COLOR="Navy"]отправляешь в неё матрицу любой размерности, а в ответ получаешь обратную[/COLOR]

Был бы очень благодарен)))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог