Официальный сайт студ.городка НГТУ
Программирование и БД » VBA. Подскажите пожалуйста в чем ошибка 

#1  08.04.11 13:34

VBA. Подскажите пожалуйста в чем ошибка

В этой программе нужно ввести матрицу и транспонировать. Это задание выполняется. Еще не обходимо найти определитель, используя  стандартные функции. Но у меня почему-то не хочет работать. В чем примина?=(((((аааа=(
Private Function qwe Command1_Click(qqq as variant)
Dim a(), b()
n = Val(InputBox("Kol-vo strok"))
m = Val(InputBox("kol-vo stolbcov"))
ReDim a(1 To n, 1 To m)
ReDim b(1 To m, 1 To n)
For I = 1 To n
For J = 1 To m
a(I, J) = InputBox(I & J) & Chr(9)
Next J
Next I
For I = 1 To n
For J = 1 To m
b(J, I) = a(I, J)
Next J
Next I
sss = ""
For I = 1 To m
For J = 1 To n
sss = sss & b(I, J)
qqq = qqq & a(I, J)
Next J
sss = sss & Chr(13)
qqq = qqq & Chr(13)
Next I
Selection.TypeText sss
Selection.TypeText qqq
MsgBox sss
MsgBox qqq
qwe = Application.Mdeterm(qqq)
Selection.TypeText qwe
MsgBox qwe
End Function

Offline

#2  08.04.11 13:40

Re: VBA. Подскажите пожалуйста в чем ошибка

А что у тебя содежит qqq? На сколько я понимаю, функция Mdeterm принимает на входе массив... т.е. твою матрицу надо туда передавать... a - это исходная матрица, b - транспонированная... чей определитель тебе надо посчитать?

Offline

#3  08.04.11 19:50

Re: VBA. Подскажите пожалуйста в чем ошибка

1)

Jaguar написал(а):

a - это исходная матрица, b - транспонированная... чей определитель тебе надо посчитать?

При транспонировании определитель матрицы не меняется.
2) Определитель существует только для квадратной матрицы
3) что ты планируешь принять в качестве аргумента и вернуть из функции?
4)

Код::

Private Sub CommandButton2_Click()
'Private Function Det(qqq As variant) As Double
    Dim a()  As Double
    Dim b()  As Double

    n = Val(InputBox("Size of matrix"))
    ReDim a(1 To n, 1 To n)
    ReDim b(1 To n, 1 To n)
    For I = 1 To n
        For J = 1 To n
            a(I, J) = InputBox(I & J) & Chr(9)
            b(J, I) = a(I, J)
        Next J
    Next I

    sss = ""
    For I = 1 To n
        For J = 1 To n
            sss = sss & b(I, J) & " "
            qqq = qqq & a(I, J) & " "
        Next J
        sss = sss & Chr(13)
        qqq = qqq & Chr(13)
    Next I
    MsgBox "Matrix A" & vbCrLf & qqq
    MsgBox "Matrix B" & vbCrLf & sss
    qwe = Application.MDeterm(a)
    MsgBox "d = " & qwe
    
    'Det=qwe
'End Function
End Sub

5) Форматируйте код, блеать. Хоть немного. Ну и, видимо

Код::

пользовать религия запрещает?

Исправлено Revenger (08.04.11 20:43)

Offline

#4  09.04.11 00:58

Re: VBA. Подскажите пожалуйста в чем ошибка

3) что ты планируешь принять в качестве аргумента и вернуть из функции?
Мне необходимо посчитать определитель матрицы MDeterm (эту функцию использовать)

Offline

#5  09.04.11 01:01

Re: VBA. Подскажите пожалуйста в чем ошибка

Он выдает ошибку на первую строчку и на функцию  Mdeterm(((
ааа(

Offline

#6  09.04.11 01:18

Re: VBA. Подскажите пожалуйста в чем ошибка

MariaPyla написал(а):

Он выдает ошибку на первую строчку

Ну так блин, создай кнопку с именем CommandButton2. Либо код функции воткни в нужное место.

MariaPyla написал(а):

и на функцию  Mdeterm(((

Какую ошибку? Телепаты в отпуске
З.Ы. вопрос на засыпку - зачем тебе VBA?

Исправлено Revenger (09.04.11 01:19)

Offline

#7  09.04.11 01:21

Re: VBA. Подскажите пожалуйста в чем ошибка

Мне не зачем. А преподу надо лабу. А я блондинка=)
Ну а делать -то все равно надо!=)

Offline

#8  09.04.11 01:22

Re: VBA. Подскажите пожалуйста в чем ошибка

Так ошибка-то какая?
З.Ы. На фпми вроде нет лаб по этой фигне.

Offline

#9  10.04.11 23:25

Re: VBA. Подскажите пожалуйста в чем ошибка

Revenger написал(а):

При транспонировании определитель матрицы не меняется.

я в курсе... это была ирония, т.к. передается в Mdeterm какая-то фигня...

Offline

#10  10.04.11 23:28

Re: VBA. Подскажите пожалуйста в чем ошибка

Jaguar, ну всякое бывает)) а то я уж испугался. Ну ладно человек написал ф-ю, которая может попытаться посчитать det от прямоугольной матрицы, но чтоб опытный человек такую фигню написал - мне аж жутко стало))

Offline

#11  11.04.11 12:29

Re: VBA. Подскажите пожалуйста в чем ошибка

Revenger,  :) просто реально вопрос заключался в том, что не считается детерминант... вот я и указал на причину... т.е. реально матрица хранится в одних переменных, а расчет пытается делаться от строки qqq

Offline

#12  13.04.11 00:36

Re: VBA. Подскажите пожалуйста в чем ошибка

как ругался на эту функцию vba так и ругается....
Revenger ладно проверила твой вариант, без фу-ции нахождения матрицы работает, с ней нет(
ПЕЧАЛЬ

Offline

#13  13.04.11 11:13

Re: VBA. Подскажите пожалуйста в чем ошибка

MariaPyla написал(а):

как ругался на эту функцию vba так и ругается...

если ругаецца на Mdeterm, то вместо этого

Код::

qwe = Application.Mdeterm(qqq)

сделай так

Код::

qwe = WorksheetFunction.Mdeterm(qqq)

Исправлено dorido (13.04.11 11:14)

Offline

Программирование и БД » VBA. Подскажите пожалуйста в чем ошибка 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.026 сек.
Выполнено 11 запросов.