Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/26: Рейтинг темы: голосов - 26, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 23

Редактируя треугольник сделать из него равнобедренный

09.08.2011, 11:27. Показов 4916. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна программка на VB 6.0: Редактируя треугольник сделать из него равнобедренный. Так вот, я треугольник могу построить, а как сделать из него равнобедренный??? Кто-нибудь, помогите, пожалуйста!!!

Построение треугольника (на нажатие правой кнопкой мыши появляется точка, затем 3 точки соединяются в треугольник. а на нажатие левой кнопкой на вершину, треугольник можно редактировать):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Option Explicit
Option Base 1
Dim i As Integer, ii As Integer
Dim a1 As Single, a2 As Single, a3 As Single, b1 As Single, b2 As Single, b3 As Single
Dim fl As Boolean
Dim xx() As Single
Dim xxx() As Single
Dim yyy() As Single
Dim yy() As Single
 
Private Sub Form_Activate()
Picture1.Scale (-10, 10)-(10, -10)
fl = False
End Sub
 
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
i = i + 1
If i < 4 Then
ReDim Preserve xx(i)
ReDim Preserve yy(i)
xx(i) = X
yy(i) = Y
Picture1.Circle (X, Y), 0.1
If i = 3 Then
Picture1.Line (xx(2), yy(2))-(xx(1), yy(1))
Picture1.Line (xx(3), yy(3))-(xx(2), yy(2))
Picture1.Line (xx(1), yy(1))-(xx(3), yy(3))
End If
End If
End If
End Sub
 
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
For i = 1 To 3
If Sqr((xx(i) - X) ^ 2 + (yy(i) - Y) ^ 2) < 0.2 Then
ii = i
Picture1.MousePointer = vbCrosshair
fl = True
Exit Sub
End If
Next i
End If
End Sub
 
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 And fl = True Then
xx(ii) = X
yy(ii) = Y
Picture1.Cls
Triangle
End If
End Sub
 
Private Sub Triangle()
For i = 1 To 3
Picture1.Circle (xx(i), yy(i)), 0.1
Next i
Picture1.Line (xx(2), yy(2))-(xx(1), yy(1))
Picture1.Line (xx(3), yy(3))-(xx(2), yy(2))
Picture1.Line (xx(1), yy(1))-(xx(3), yy(3))
End If
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.08.2011, 11:27
Ответы с готовыми решениями:

Равнобедренный треугольник со вписанной в него окружностью
Программа должна рисовать равнобедренный треугольник со вписанной в него окружностью, но появляется ошибка ; ошибка: неверно сформированный...

Сделать равнобедренный треугольник из прямоугольного
Здравствуйте. Есть прямоугольный треугольник. Как из него сделать равнобедренный? #include &lt;stdio.h&gt; int main (){ int...

В Paintbox вписать в круг треугольник, потом квадрат, и равнобедренный треугольник
Int a=StrToInt (Edit1-&gt;Text); PaintBox-&gt;Canvas-&gt;Ellipse(200-a/2,200-a/2,200+a/2,200+a/2);нарисовал круг, а как вписать в него другие...

38
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
09.08.2011, 16:26
Студворк — интернет-сервис помощи студентам
МатФак? )))))) чему вас там учат то?
Я бы ещще понял, если бы, к примеру медицинский...
Но на матфаке основные предметы Матан и Ангем....
Как можно там учиться и не знать вещей, проходимых в средней школе?
0
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 23
09.08.2011, 16:27  [ТС]
В средней школе проходят VB? Видимо нев в той школе, гду училась я, потому что мы программирование там вообще не проходили... никак... :-((
0
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
09.08.2011, 16:28
ну а что такого? конечно в IF..
if Sqr(a1 ^ 2 + b1 ^ 2) = Sqr(a2 ^ 2 + b2 ^ 2) Or Sqr(a3 ^ 2 + b3 ^ 2) = Sqr(a2 ^ 2 + b2 ^ 2) Or Sqr(a1 ^ 2 + b1 ^ 2) = Sqr(a3 ^ 2 + b3 ^ 2) then msgbox 'OK'
0
1 / 1 / 0
Регистрация: 07.03.2010
Сообщений: 111
09.08.2011, 16:30
Тут нужна в основном геометрия )
(Но это и без меня здесь уже говорили).

А VB можно и по самоучителю освоить.
0
1 / 1 / 0
Регистрация: 07.03.2010
Сообщений: 111
09.08.2011, 16:34
Да и еще, я тут писал sqrt вместо sqr, не сочтите за неграмотность, просто я пишу чаще на СИ, а там это пишется именно так.
0
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 23
09.08.2011, 16:45  [ТС]
Я не тупая как кажется, написала вот программку. Толку-то только? Теперь у меня другой вопрос, как попасть в ту точку, где треугольник станет равнобедренным? Я имею в виду, как сделать не точное, а приближенное попадание курсором в вершину треугольника?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Option Explicit
Option Base 1
Dim i As Integer, ii As Integer
Dim fl As Boolean
Dim xx() As Single
Dim yy() As Single
 
Private Sub Form_Activate()
Picture1.Scale (-10, 10)-(10, -10)
fl = False
End Sub
 
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
i = i + 1
If i < 4 Then
ReDim Preserve xx(i)
ReDim Preserve yy(i)
xx(i) = X
yy(i) = Y
Picture1.Circle (X, Y), 0.1
If i = 3 Then
Picture1.Line (xx(2), yy(2))-(xx(1), yy(1))
Picture1.Line (xx(3), yy(3))-(xx(2), yy(2))
Picture1.Line (xx(1), yy(1))-(xx(3), yy(3))
End If
End If
End If
End Sub
 
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
For i = 1 To 3
If Sqr((xx(i) - X) ^ 2 + (yy(i) - Y) ^ 2) < 0.2 Then
ii = i
Picture1.MousePointer = vbCrosshair
fl = True
Exit Sub
End If
Next i
End If
End Sub
 
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 And fl = True Then
xx(ii) = X
yy(ii) = Y
Picture1.Cls
Triangle
End If
End Sub
 
Private Sub Triangle()
For i = 1 To 3
Picture1.Circle (xx(i), yy(i)), 0.1
Next i
Picture1.Line (xx(2), yy(2))-(xx(1), yy(1))
Picture1.Line (xx(3), yy(3))-(xx(2), yy(2))
Picture1.Line (xx(1), yy(1))-(xx(3), yy(3))
If Sqr((xx(2) - xx(1)) ^ 2 + (yy(2) - yy(1)) ^ 2) = Sqr((xx(3) - xx(2)) ^ 2 + (yy(3) - yy(2)) ^ 2) Or Sqr((xx(1) - xx(3)) ^ 2 + (yy(1) - yy(3)) ^ 2) = Sqr((xx(3) - xx(2)) ^ 2 + (yy(3) - yy(2)) ^ 2) Or Sqr((xx(2) - xx(1)) ^ 2 + (yy(2) - yy(1)) ^ 2) = Sqr((xx(1) - xx(3)) ^ 2 + (yy(1) - yy(3)) ^ 2) Then
MsgBox 'треугольник равнобедренный'
End If
End Sub
0
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
09.08.2011, 16:59
мдааа..... логики, у вас, девушка, никакой.
Вот так вот надо:

If Abs(Sqr((xx(2) - xx(1)) ^ 2 + (yy(2) - yy(1)) ^ 2) - Sqr((xx(3) - xx(2)) ^ 2 + (yy(3) - yy(2)) ^ 2) < 90) Or Abs(Sqr((xx(1) - xx(3)) ^ 2 + (yy(1) - yy(3)) ^ 2) - Sqr((xx(3) - xx(2)) ^ 2 + (yy(3) - yy(2)) ^ 2)) < 90 Or Abs(Sqr((xx(2) - xx(1)) ^ 2 + (yy(2) - yy(1)) ^ 2) - Sqr((xx(1) - xx(3)) ^ 2 + (yy(1) - yy(3)) ^ 2)) < 90 Then

где 90 - максимальное возможное отклонение.
Abs - модуль числа.
0
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 23
09.08.2011, 16:59  [ТС]
Всем БОЛЬШУЩЕЕЕ СПАСИБО!!! Спасибо за помощь и за внимание!!! Всё, программка работает.......
=^_^=
0
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 23
09.08.2011, 17:01  [ТС]
Можно, кстати, проще поступить:
(Sqr((xx(2) - xx(1)) ^ 2 + (yy(2) - yy(1)) ^ 2)) - (Sqr((xx(3) - xx(2)) ^ 2 + (yy(3) - yy(2)) ^ 2)) < 0.3 Or (Sqr((xx(1) - xx(3)) ^ 2 + (yy(1) - yy(3)) ^ 2)) - (Sqr((xx(3) - xx(2)) ^ 2 + (yy(3) - yy(2)) ^ 2)) < 0.3 Or (Sqr((xx(2) - xx(1)) ^ 2 + (yy(2) - yy(1)) ^ 2)) - (Sqr((xx(1) - xx(3)) ^ 2 + (yy(1) - yy(3)) ^ 2)) < 0.3
ну не проще, так понятнее для меня)
:-)))
0
1 / 1 / 0
Регистрация: 07.03.2010
Сообщений: 111
09.08.2011, 17:02
>>Я имею в виду, как сделать не точное, а приближенное попадание курсором в вершину треугольника?

Не понятно поясни.
0
1 / 1 / 0
Регистрация: 07.03.2010
Сообщений: 111
09.08.2011, 17:04
Прошу прощения, пока я отправлял сообщение, вы решили проблему.
0
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 23
09.08.2011, 17:04  [ТС]
To Aniskov: Трудно курсором попасть в необходимую нам точку, поэтому надо взять окрестность точки побольше
0
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
09.08.2011, 17:09
Попасть в точку мышью, да еще чтобы получился равнобедренный треугольник, это все равно, что попасть пальцем в небо. Почему? потому что вычисления проводятся для чисел с точкой, в то время как мышь работает с пикселями (целыми числами).
Поэтому предлагаю прежде, чем делать сравнение отсекать числа после запятой, или более того, надо принять некую допустимую погрешность (например 2-5 пикселей). Сделав проверку с учетом погрешности и приняв результат (согласится что треугольник равнобедренный) просто в коде подкорректировать точку. В этом случае, визуально, при приближении мыши к необходимой точке, треугольник будет устанавливаться сам.
(конечно не совсем сам, надо эту проблему решить в коде ).
0
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
09.08.2011, 17:11
Ну у вас и скорость, пока писал свой ответ, вы уже набросали тут похожих ответов.
Молодцы!!!
0
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 23
09.08.2011, 17:15  [ТС]
Всё равно всем огроменное спасибо за помощь :-)
0
Comanche
09.08.2011, 17:17
Ну ничего себе, вы тут напостили )
Messir
09.08.2011, 22:12
Так, пора делать в профайле обязательной для заполнения графу 'Пол' и 'Возраст' И фотку по возможности...
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
09.08.2011, 22:20
I ravnobedrennyiy treugol'nik
0
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 23
10.08.2011, 08:06  [ТС]
Ага, фотку, пол и возраст в профайле это идея....
А я прям сейчас могу сознаться, что мне 17 лет... :-)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.08.2011, 08:06
Помогаю со студенческими работами здесь

Процедура позволяет рисовать треугольник по координатам вершин трёх точек. Нарисовать прямоугольный треугольник, и равнобедренный
помогите пожалуйста решить, срочно нужно на экзамен...жду вашей помощи) 1)Процедура позволяет рисовать треугольник по координатам вершин...

Класс треугольник с произвольным классом - равнобедренный треугольник
Создать класс треугольник, члены класса - длины 3-х сторон. Предусмотреть в классе методы проверки существования треугольника, вычисления и...

Равнобедренный треугольник
Зная величину трех углов треугольника в градусах выяснить может ли существовать такой треугольник. если да, то является ли он...

равнобедренный треугольник
Подскажите, пожалуйста, как написать программку, которая по нажатию кнопки &quot;вычислить&quot; выдавала бы результат. Задача такая: в...

Равнобедренный треугольник
Здравствуйте! Пожайлуста помогите решить. Угл при вершине равнобедренного треугольника 120, а боковая сторона 3. Найти радиус описанной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных выбран регистр накопления, в. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru