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

Ваш аккаунт

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

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

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

Перевод с C++ на VB

7
13 апреля 2010 года
@pixo $oft
3.4K / / 20.09.2006
Имеется код на C++,взятый отсюда.После переписывания на VB получилось вот что:
Код:
Private Function Det1(ByRef Matrix() As Double, ByVal N As Byte) As Double
 Dim StrNum As Long, I As Long, I1 As Long, J As Long, J1 As Long, Coeff As Double, _
 K As Double, Flag As Boolean, Mtx() As Double, Temp As Double
 ReDim Mtx(0 To N - 1, 0 To N - 1)
 For I = 0 To N - 1
  For J = 0 To N - 1
   Mtx(I, J) = Matrix(I, J)
  Next J
 Next I
 J = 0: Coeff = 1
 For I = 0 To N - 1
  If StrNum = 0 Then
   If Mtx(I, J) <> 0 Then
    If Mtx(I, J) < 0 Then
     For J1 = 0 To N - 1
      Mtx(I, J1) = -Mtx(I, J1)
     Next J1
     Coeff = -Coeff
    End If
    StrNum = I
    K = Mtx(I, J)
    Coeff = Coeff * K
    For J1 = 0 To N - 1
     Mtx(I, J1) = Mtx(I, J1) / K
    Next J1
    J1 = J: I1 = I + 1
    While I1 < N
     K = Mtx(I1, J1)
     For J1 = J1 To N - 1
      Mtx(I1, J1) = Mtx(I1, J1) - K * Mtx(I, J1)
     Next J1
     I1 = I1 + 1: J1 = J
    Wend
    StrNum = 0: J = I + 1: Flag = False
   Else
    For J1 = 0 To N - 1
     Temp = Mtx(I, J1): Mtx(I, J1) = Mtx(N - 1, J1)
    Next J1
    I = I - 1: Coeff = -Coeff
    If Flag = True Then
     I = I + 1: Coeff = 0
    End If
    Flag = True
   End If
  End If
 Next I
 Det1 = Coeff
End Function
Но он работает неправильно.Если убрать J=0(в самом начале),получается ерунда,ибо после цикла J&#8800;0
Где я мог допустить ошибку?

P.S.Т.к. исходный код меняет матрицу,я её предварительно копирую
Upd:следует добавить,что VB6
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог