Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VB6] Вычисление определителя матрицы, Помогите дописать программу 
:(
    Опции темы
kostyaizznu
Дата 22.12.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 30.10.2008
Где: Запорожье

Репутация: нет
Всего: нет



Программа вычисляет определитель вводимой матрицы

Добавте, пожалуйста, кнопку "Произвольное заполнение"...При нажатии которой матрица заполняется рандомно целыми числами и вычисляется определитель.

Код

Option Explicit
Dim i, j, k, l, m As Byte
Dim n As Integer
Dim C, d, s As Double
Dim B(9, 9) As Double
Static Function d2(i1 As Byte, i2 As Byte, j1 As Byte, j2 As Byte) As Double
d2 = B(i1, j1) - B(i2, j2)
End Function
Static Function d3(i1 As Byte, i2 As Byte, i3 As Byte, j1 As Byte, j2 As Byte, j3 As Byte) As Double
d3 = B(i1, j1) * B(i2, j2) * B(i3, j3) + B(i1, j2) * B(i2, j3) * B(i3, j1) + B(i2, j1) * B(i3, j2) * B(i1, j3) - B(i1, j3) * B(i2, j2) * B(i3, j1) - B(i1, j1) * B(i2, j3) * B(i3, j2) - B(i1, j2) * B(i2, j1) * B(i3, j3)
End Function
Static Function d4(i1 As Byte, i2 As Byte, i3 As Byte, i4 As Byte, j1 As Byte, j2 As Byte, j3 As Byte, j4 As Byte) As Double
d4 = B(i1, j1) * d3(i2, i3, i4, j2, j3, j4) - B(i1, j2) * d3(i2, i3, i4, j1, j3, j4) + B(i1, j3) * d3(i2, i3, i4, j1, j2, j4) - B(i1, j4) * d3(i2, i3, i4, j1, j2, j3)
End Function
Static Function d5(i1 As Byte, i2 As Byte, i3 As Byte, i4 As Byte, i5 As Byte, j1 As Byte, j2 As Byte, j3 As Byte, j4 As Byte, j5 As Byte) As Double
d5 = B(i1, j1) * d4(i2, i3, i4, i5, j2, j3, j4, j5) - B(i1, j2) * d4(i2, i3, i4, i5, j1, j3, j4, j5) + B(i1, j3) * d4(i2, i3, i4, i5, j1, j2, j4, j5) - B(i1, j4) * d4(i2, i3, i4, i5, j1, j2, j3, j5) + B(i1, j5) * d4(i2, i3, i4, i5, j1, j2, j3, j4)
End Function
Static Function d6(i1 As Byte, i2 As Byte, i3 As Byte, i4 As Byte, i5 As Byte, i6 As Byte, j1 As Byte, j2 As Byte, j3 As Byte, j4 As Byte, j5 As Byte, j6 As Byte) As Double
d6 = B(i1, j1) * d5(i2, i3, i4, i5, i6, j2, j3, j4, j5, j6) - B(i1, j2) * d5(i2, i3, i4, i5, i6, j1, j3, j4, j5, j6) + B(i1, j3) * d5(i2, i3, i4, i5, i6, j1, j2, j4, j5, j6) - B(i1, j4) * d5(i2, i3, i4, i5, i6, j1, j2, j3, j5, j6) + B(i1, j5) * d5(i2, i3, i4, i5, i6, j1, j2, j3, j4, j6) - B(i1, j6) * d5(i2, i3, i4, i5, i6, j1, j2, j3, j4, j5)
End Function
Static Function d7(i1 As Byte, i2 As Byte, i3 As Byte, i4 As Byte, i5 As Byte, i6 As Byte, i7 As Byte, j1 As Byte, j2 As Byte, j3 As Byte, j4 As Byte, j5 As Byte, j6 As Byte, j7 As Byte) As Double
d7 = B(i1, j1) * d6(i2, i3, i4, i5, i6, i7, j2, j3, j4, j5, j6, j7) - B(i1, j2) * d6(i2, i3, i4, i5, i6, i7, j1, j3, j4, j5, j6, j7) + B(i1, j3) * d6(i2, i3, i4, i5, i6, i7, j1, j2, j4, j5, j6, j7) - B(i1, j4) * d6(i2, i3, i4, i5, i6, i7, j1, j2, j3, j5, j6, j7) + B(i1, j5) * d6(i2, i3, i4, i5, i6, i7, j1, j2, j3, j4, j6, j7) - B(i1, j6) * d6(i2, i3, i4, i5, i6, i7, j1, j2, j3, j4, j5, j7) + B(i1, j6) * d6(i2, i3, i4, i5, i6, i7, j1, j2, j3, j4, j5, j7) - B(i1, j7) * d6(i2, i3, i4, i5, i6, i7, j1, j2, j3, j4, j5, j6)
End Function
Static Function d8(i1 As Byte, i2 As Byte, i3 As Byte, i4 As Byte, i5 As Byte, i6 As Byte, i7 As Byte, i8 As Byte, j1 As Byte, j2 As Byte, j3 As Byte, j4 As Byte, j5 As Byte, j6 As Byte, j7 As Byte, j8 As Byte) As Double
d8 = B(i1, j1) * d7(i2, i3, i4, i5, i6, i7, i8, j2, j3, j4, j5, j6, j7, j8) - B(i1, j2) * d7(i2, i3, i4, i5, i6, i7, i8, j1, j3, j4, j5, j6, j7, j8) + B(i1, j3) * d7(i2, i3, i4, i5, i6, i7, i8, j1, j2, j4, j5, j6, j7, j8) - B(i1, j4) * d7(i2, i3, i4, i5, i6, i7, i8, j1, j2, j3, j5, j6, j7, j8) + B(i1, j5) * d7(i2, i3, i4, i5, i6, i7, i8, j1, j2, j3, j4, j6, j7, j8) - B(i1, j6) * d7(i2, i3, i4, i5, i6, i7, i8, j1, j2, j3, j4, j5, j7, j8) + B(i1, j7) * d7(i2, i3, i4, i5, i6, i7, i8, j1, j2, j3, j4, j5, j6, j8) - B(i1, j8) * d7(i2, i3, i4, i5, i6, i7, i8, j1, j2, j3, j4, j5, j6, j7)
End Function
Static Function d9(i1 As Byte, i2 As Byte, i3 As Byte, i4 As Byte, i5 As Byte, i6 As Byte, i7 As Byte, i8 As Byte, i9 As Byte, j1 As Byte, j2 As Byte, j3 As Byte, j4 As Byte, j5 As Byte, j6 As Byte, j7 As Byte, j8 As Byte, j9 As Byte) As Double
d9 = B(i1, j1) * d8(i2, i3, i4, i5, i6, i7, i8, i9, j2, j3, j4, j5, j6, j7, j8, j9) - B(i1, j2) * d8(i2, i3, i4, i5, i6, i7, i8, i9, j1, j3, j4, j5, j6, j7, j8, j9) + B(i1, j3) * d8(i2, i3, i4, i5, i6, i7, i8, i9, j1, j2, j4, j5, j6, j7, j8, j9) - B(i1, j4) * d8(i2, i3, i4, i5, i6, i7, i8, i9, j1, j2, j3, j5, j6, j7, j8, j9) + B(i1, j5) * d8(i2, i3, i4, i5, i6, i7, i8, i9, j1, j2, j3, j4, j6, j7, j8, j9) - B(i1, j6) * d8(i2, i3, i4, i5, i6, i7, i8, i9, j1, j2, j3, j4, j5, j7, j8, j9) + B(i1, j7) * d8(i2, i3, i4, i5, i6, i7, i8, i9, j1, j2, j3, j4, j5, j6, j8, j9) - B(i1, j8) * d8(i2, i3, i4, i5, i6, i7, i8, i9, j1, j2, j3, j4, j5, j6, j7, j9) + B(i1, j9) * d8(i2, i3, i4, i5, i6, i7, i8, i9, j1, j2, j3, j4, j5, j6, j7, j8)
End Function

Static Function d10(i1 As Byte, i2 As Byte, i3 As Byte, i4 As Byte, i5 As Byte, i6 As Byte, i7 As Byte, i8 As Byte, i9 As Byte, i10 As Byte, j1 As Byte, j2 As Byte, j3 As Byte, j4 As Byte, j5 As Byte, j6 As Byte, j7 As Byte, j8 As Byte, j9 As Byte, j10 As Byte) As Double
d10 = B(i1, j1) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j2, j3, j4, j5, j6, j7, j8, j9, j10) - B(i1, j2) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j1, j3, j4, j5, j6, j7, j8, j9, j10) + B(i1, j3) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j1, j2, j4, j5, j6, j7, j8, j9, j10) - B(i1, j4) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j1, j2, j3, j5, j6, j7, j8, j9, j10) + B(i1, j5) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j1, j2, j3, j4, j6, j7, j8, j9, j10) - B(i1, j6) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j1, j2, j3, j4, j5, j7, j8, j9, j10) + B(i1, j7) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j1, j2, j3, j4, j5, j6, j8, j9, j10) - B(i1, j8) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j1, j2, j3, j4, j5, j6, j7, j9, j10) + B(i1, j9) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j1, j2, j3, j4, j5, j6, j7, j8, j10) - B(i1, j10) * d9(i2, i3, i4, i5, i6, i7, i8, i9, i10, j1, j2, j3, j4, j5, j6, j7, j8, j9)
End Function

Private Sub det_Click()
s = 1
For i = 0 To n

    For j = 0 To n
        B(i, j) = Val(a(10 * i + j).Text)
    Next j
Next i
Select Case n
Case 0: s = B(0, 0)
Case 1: s = B(0, 0) * B(1, 1) - B(0, 1) * B(1, 0)
Case 2: s = d3(0, 1, 2, 0, 1, 2)
Case 3: s = d4(0, 1, 2, 3, 0, 1, 2, 3)
Case 4: s = d5(0, 1, 2, 3, 4, 0, 1, 2, 3, 4)
Case 5: s = d6(0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5)
Case 6: s = d7(0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6)
Case 7: s = d8(0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7)
Case 8: s = d9(0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8)
Case 9: s = d10(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
End Select
vyvod.Caption = "det = " & s
det.Visible = False
vvod.Visible = True
Label1.Visible = True
n1.Visible = True
End Sub
Private Sub Form_Load()
n = 9
End Sub



Private Sub vvod_Click()
vyvod.Caption = ""
For i = 0 To n
   For j = 0 To n
     a(10 * i + j).Visible = False
     a(10 * i + j).Text = ""
   Next j
Next i
n = Val(n1.Text)
Select Case n
Case Is < 0: MsgBox " Размерность матрицы должна бить положительной!!!", 16, "ERROR"
Case Is = 0: MsgBox "Матрица без элементов... Что это?!", , "ERROR"
Case Is > 10: MsgBox "Размерность матрицы в данной программе не может быть больше 10!", , "ERROR"
Case Else: n = n - 1
For i = 0 To n
   For j = 0 To n
     a(10 * i + j).Visible = True
   Next j
Next i
vvod.Visible = False
Label1.Visible = False
n1.Visible = False
det.Visible = True
End Select
End Sub




Добавлено через 9 минут и 40 секунд
при этом нужно вывести рандомную матрицу
PM MAIL ICQ Skype   Вверх
Akina
Дата 22.12.2008, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.