Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2009, 15:37   #1
Kuzia
 
Регистрация: 18.12.2009
Сообщений: 4
Вопрос Перевести углы в радианы

Добрый день
Есть задача-посчитать периметр и площадь фигуры (трапеции). Необходимые данные вводятся в диалоговое окно (Userform): два основания (А и В), высота (h), углы (k,l). В формуле периметра содержатся синусы углов, соответственно, вводимые значения в градусах д.б. преобразованы в радианы.
Написал такую программу:

Private Sub cmdStart_Click()
Dim A As Integer, B As Integer, h As Integer, k As Double, l As Double
A = Val(txtA.Text)
B = Val(txtB.Text)
h = Val(txth.Text)
m = k * 3.14 / 180
z = l * 3.14 / 180
If (A <> B) And ((k + l) < 180) And (k <= 90) And (l <= 90) Then
P = ((A + B) * h) / 2
S = (A + B) + h * ((1 / sin(m)) + 1 / sin(z))
txtP.Text = Str(P)
txtS.Text = Str(S)
Else
MsgBox "Îøèáêà!" + Chr(13) + "Äàííàÿ ôèãóðà íå ÿâëÿåòñÿ òðàïåöèåé", vbCritical + vbOKOnly, "Îøèáêà!!!"
txtA.Text = ""
txtB.Text = ""
txth.Text = ""
txtk.Text = ""
txtl.Text = ""
txtA.SetFocus
End If
End Sub

Но выдается ошибка"11"-деление на 0.
Скорее всего, дело в неправильном задании углов. Но как и через какую функцию их заявить?

Последний раз редактировалось Kuzia; 18.12.2009 в 16:08.
Kuzia вне форума Ответить с цитированием
Старый 18.12.2009, 16:07   #2
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Kuzia Посмотреть сообщение
Добрый день
Есть задача-посчитать периметр и площадь фигуры. В формуле периметра содержаться синусы углов.
Написал такую программу:

Private Sub cmdStart_Click()
Dim A As Integer, B As Integer, h As Integer, k As Double, l As Double
A = Val(txtA.Text)
B = Val(txtB.Text)
h = Val(txth.Text)
m = k * 3.14 / 180
z = l * 3.14 / 180
If (A <> B) And ((k + l) < 180) And (k <= 90) And (l <= 90) Then
P = ((A + B) * h) / 2
S = (A + B) + h * ((1 / sin(m)) + 1 / sin(z))
txtP.Text = Str(P)
txtS.Text = Str(S)
Else
MsgBox "Îøèáêà!" + Chr(13) + "Äàííàÿ ôèãóðà íå ÿâëÿåòñÿ òðàïåöèåé", vbCritical + vbOKOnly, "Îøèáêà!!!"
txtA.Text = ""
txtB.Text = ""
txth.Text = ""
txtk.Text = ""
txtl.Text = ""
txtA.SetFocus
End If
End Sub

Но выдается ошибка"11"-деление на 0.
Скорее всего, дело в неправильном задании углов. Но как и через какую функцию их заявить?
У тебя в условии
Код:
   If (A <> B) And ((k + l) < 180) And (k <= 90) And (l <= 90) Then
угол K и L могут быть равны 0 градусов. синус 0 равен 0 возникает деление на 0
дополни условие
Код:
   If (A <> B) And ((k + l) < 180) And (k <= 90) And (l <= 90) And Not m=0 AND Not z=-0 then
Из программы непонятно откуда ты берешь углы. По умолчанию когда объявляешь переменную она равна Null. поэтому m и z равны 0
Юнлинг вне форума Ответить с цитированием
Старый 18.12.2009, 16:14   #3
Kuzia
 
Регистрация: 18.12.2009
Сообщений: 4
По умолчанию

углы вводятся любые, как и основания и высота трапеции. А ограничения такие заданы такие, чтобы соблюсти условия трапеции
Kuzia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синус и радианы Вадим Буренков Общие вопросы Delphi 2 13.05.2009 17:26
перевести из C++ в C AlinAA Фриланс 8 06.03.2009 20:41
Треугольник задан длинами своих сторон: a, b, c. Найти углы треугольника. задача на С++ Wia Помощь студентам 6 13.12.2008 16:13
Есть ли функция для cos параметр которого не радианы, а градусы? Gromsky Помощь студентам 6 14.03.2008 16:26