Здравейте всички.
Имам да правя курсова задача на excel + vb и сериозно забих. Мисля си че съм почти готов с основната част пробвам да въведа някои случайни числа и краш - "unable to get acos property of WorsheetFunctions class".
Задачата е да се вземат координатите на точки от файл, да се изкарат на Sheet 1. От ъглите между правите минаващи през началото O(0,0) и точките да се направи матрица:
"Да се състави матрица А, чиито елементи Aij представляват ъглите между правите 0Pi и 0Pj. "
А също така и няколко други глупости.
Моята идея е матрицата А(N, N) да съдържа ъглите, а самите ъгли да изчислява функцията angle(i, j, koord())
koord() съдържа координатите на ъглите.
'формиране на матрицата А
For i = 1 To N
For j = 1 To N
A(i, j) = Angle(i, j, koord())
Next j
Next i |
Function Angle(i As Integer, j As Integer, k() As Single) As Double
Dim a1 As Single, a2 As Single, b1 As Single, b2 As Single
Dim cosF As Double
a1 = k(i, 1)
a2 = k(i, 2)
b1 = k(j, 1)
b2 = k(j, 2)
cosF = (a1 * b1 + a2 * b2) / (Sqr(a1 ^ 2 + a2 ^ 2) * Sqr(b1 ^ 2 + b2 ^ 2))
Angle = Application.WorksheetFunction.Acos(cosF)
End Function |
Самият ъгъл се изчислява по форумулата за скаларно произведение на два вектора
аb = |a||b|cos (F)
Проблема е че като вкарам едни данни и acos не ще да работи (поне това разбирам от съобщението). Прилагам файла с координатите и целият excel файл(програмата трябва да се стартира от vb едитора)
koordinati.txt
piis.xls
Просто не мога да разбера от къде идва проблема. Знам че си е доста работа да се намери грешка, но все пак се надявам, че някои ще даде идея.