Перевести код программы с VB на VBA

Узнай цену своей работы

Формулировка задачи:

Кто нибудь может помочь перевести код программы с VB на VBA?

Решение задачи: «Перевести код программы с VB на VBA»

textual
Листинг программы
  1. Sub Kramer(A() As Double, Y() As Double, R() As Double, flgRes As Boolean)
  2. Dim T() As Double
  3.     n% = UBound(Y, 1)
  4.     D_main = Det(A)
  5.     If Abs(D_main) <= 0.0000000001 Then
  6.        flgRes = False
  7.        Exit Sub
  8.     End If
  9.     ReDim T(1 To n%, 1 To n%) As Double
  10.     For ii% = 1 To n%
  11.         For i% = 1 To n%
  12.             For j% = 1 To n%
  13.                 T(i%, j%) = A(i%, j%)
  14.             Next j%
  15.         Next i%
  16.         For j% = 1 To n%
  17.             T(j%, ii%) = Y(j%)
  18.         Next j%
  19.         R(ii%) = Det(T) / D_main
  20.     Next ii%
  21.     flgRes = True
  22. End Sub
  23.  
  24. Function Det(A() As Double) As Double
  25.      n% = UBound(A, 1)
  26.      If n% = 2 Then
  27.         Det = A(1, 1) * A(2, 2) - A(1, 2) * A(2, 1)
  28.      Else
  29.         S# = 1
  30.         For j% = 1 To n%
  31.             Det = Det + A(1, j%) * Det(Minor(A(), 1, j%)) * S#
  32.             S# = -S#
  33.         Next j%
  34.      End If
  35. End Function
  36.  
  37. Function Minor(A() As Double, m As Integer, k As Integer) As Double()
  38. Dim B() As Double
  39.     nn% = UBound(A, 1)
  40.     ReDim B(1 To nn% - 1, 1 To nn% - 1) As Double
  41.     ii% = 1
  42.     jj% = 1
  43.     For i% = 1 To nn%
  44.         For j% = 1 To nn%
  45.             If i% <> m And j% <> k Then
  46.                B(ii%, jj%) = A(i%, j%)
  47.                jj% = jj% + 1
  48.                If jj% > nn% - 1 Then
  49.                   ii% = ii% + 1
  50.                   jj% = 1
  51.                End If
  52.             End If
  53.         Next j%
  54.      Next i%
  55.      Minor = B
  56. End Function
  57.  
  58. Sub Test()
  59.  
  60. Dim A(1 To 4, 1 To 4) As Double
  61. Dim Y(1 To 4)         As Double
  62. Dim R(1 To 4)         As Double
  63. Dim flg               As Boolean
  64.  
  65.     A(1, 1) = 1
  66.     A(1, 2) = 1
  67.     A(1, 3) = 1
  68.     A(1, 4) = 1
  69.    
  70.     A(2, 1) = 2
  71.     A(2, 2) = 1
  72.     A(2, 3) = 2
  73.     A(2, 4) = 1
  74.    
  75.     A(3, 1) = 0
  76.     A(3, 2) = 1
  77.     A(3, 3) = 3
  78.     A(3, 4) = -2
  79.    
  80.     A(4, 1) = 7
  81.     A(4, 2) = 1
  82.     A(4, 3) = -1
  83.     A(4, 4) = 5
  84.    
  85.     Y(1) = 0
  86.     Y(2) = 2
  87.     Y(3) = 4
  88.     Y(4) = 0
  89.  
  90.     Kramer A, Y, R, flg
  91.    
  92.     If flg Then
  93.        For i% = 1 To 4
  94.            Debug.Print R(i%)
  95.        Next i%
  96.     Else
  97.        Debug.Print "Решений нет!"
  98.     End If
  99. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы