Форумы Серверы Суспільство
Игры Серверы VBIOS General Soft & Hard Увлечения А поговорить... Культура Полезная информация Межигір'я Чат

Пользователь Сообщение: VBA задачка        (Тема#50406)
DemiG0D 
лейтенант
DemiG0D
: КиеВ
С нами с 13.05.08
Посты: 272
02.06.11 21:26 Ukraine #1033093
Есть такое условие :
Запрограмувати VBA функцію, яка визначає значення кута А в градусах між променем, що з'єднує точку з координатами Х, У з початком координат, і позитивним напрямком осі Х. Відлік значень кута А вести проти годинникової стрілки.

Вот что у меня пока вышло :

Function kut(x, y)
If x > 0 And y > 0 Then
kut = Atn(y / x) * 90
ElseIf x <= 0 And y >= 0 Then
kut = Atn(y / Abs(x)) * 90
ElseIf x < 0 And y < 0 Then
kut = Atn(Abs(y) / Abs(x)) * 90
ElseIf x > 0 And y < 0 Then
kut = Atn(Abs(y) / x) * 90
End If
End Function

Но мне также нужно что бы если ввести вместо х или у 0 например в значении угла показывалось 90 градусов ну или 0 градусов..) В общем я не очень разбираюсь поэтому кто может помогите пожалуйста!
KillMachine UA 
генералиссимус
KillMachine UA
Возраст: 39
: Київ
С нами с 10.12.07
Посты: 25376
02.06.11 22:13 [Re: DemiG0D] Ukraine #1033150
а можно детский вопрос? зачем ты везде на 90 умножаешь?
Franchesko 
Пет Рарка
Franchesko
Возраст: 27
: Киев
С нами с 13.05.08
Посты: 15355
02.06.11 22:25 [Re: DemiG0D] Ukraine #1033160
  • DemiG0D :

Но мне также нужно что бы если ввести вместо х или у 0 например в значении угла показывалось 90 градусов ну или 0 градусов..) В общем я не очень разбираюсь поэтому кто может помогите пожалуйста!


я не шарю что ты там выше написал, но насчет "если ввести 0":
пропиши просто еще 2 строчки типа:
If x = 0 Then
kut = 90 (я не знаю как правильно, но кароче говоря равно 90 грд)
If y = 0 Then
kut = 0
Как то так
KillMachine UA 
генералиссимус
KillMachine UA
Возраст: 39
: Київ
С нами с 10.12.07
Посты: 25376
02.06.11 22:33 [Re: DemiG0D] Ukraine #1033164
1. вычисляешь арктангенс модульУ/модульX
2. переводишь значение угла из радиан в градусы - гугль в помощь, там не умножение на 90, а немного по-другому
3. проверяешь знаки Х,У и в зависимости от квадранта в случае надобности делаешь (180-угол), (180+угол) или (360-угол)
Nameless 
Maximus - Lite Edition
Nameless
: 404
С нами с 02.11.05
Посты: 21233
03.06.11 00:17 [Re: KillMachine UA] Ukraine #1033253
Раз ты написал VBA, значит делаешь для экселя. Поэтому я использовал встроенные функции для краткости.
Code:
Function Kut(x As Double, y As Double) As Double If x = 0 And y = 0 Then MsgBox ("At least one of coordinates must differ from 0!") Kut = -1 Exit Function End If Pi = 2 * Application.WorksheetFunction.Asin(1) A = Application.WorksheetFunction.Acos(x / Sqr(x * x + y * y)) * 180 / Pi If y >= 0 Then Kut = A Else Kut = 360 - A End If End Function

DemiG0D 
лейтенант
DemiG0D
: КиеВ
С нами с 13.05.08
Посты: 272
04.06.11 19:36 [Re: Nameless] Ukraine #1034521
Спасибо Nameless и всем, кто отозвался!
Icon Legend Права Настройки темы
Распечатать тему


1330 Просмотры
Реклама
313 сейчас в онлайне
10 пользователей (Арбанов, Lam0, monkey55, drymchuk, Din0saur, CJlOH, 6APMALEU, MAXVBIOS, Серхио, GOIIHiK) и 2 скрытых, а также 301 гостей сейчас онлайн.
     
VBIOS Version 3.0 FINAL | ©1999-2020
Execution time: 0.077 seconds.   Total Queries: 37   Zlib сжатие вкл.
All times are (GMT+3). Current time is 20:29
Top