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

Определить три точки, являющиеся вершинами треугольника, для которого разность точек вне его и внутри является

07.12.2015, 16:50. Показов 1328. Ответов 7

Студворк — интернет-сервис помощи студентам
Умоляю,помогите кто чем может(( Не получается решить задачу в visual basic: В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, у1, х2, у2, x3, y3 и т.д. Определить три точки, являющиеся вершинами треугольника, для которого разность точек вне его и внутри является минимальной.
Нет,я не лентяйка, которая сидит и ждет решения на блюдечке и не обращалась бы ни к кому, если бы не такая ситуация(курсовая работа готова,кроме этой задачи,сижу над ней неделю и не выходит ничего,а сроки сдачи уже подходят).Пожалуйста,Если вы что-то знаете по этому поводу,прошу,помогите.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2015, 16:50
Ответы с готовыми решениями:

Определить 3 точки, являющиеся вершинами треугольника, для которых разность точек вне е го и внутри является минимальной.
В одномерном массиве с четным количеством элементов(2n) находятся координаты n точек плоскости.Они распологаются в следующем порядке:x1...

Выбрать три точки из множества точек на плоскости так, чтобы была минимальной разность между количествами точек внутри и вне треугольника
Выбрать три различные точки из заданного множества точек на плоскости так, чтобы была минимальной разность между количествами ...

Определить 3 точки, являющиеся вершинами треугольника
В одномерном массиве с чётным количеством элементов(2N) находится координаты N точек плоскости. Они располагаются в следующем порядке: x1,...

7
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
07.12.2015, 20:31
Цитата Сообщение от ulyana2608 Посмотреть сообщение
сижу над ней неделю и не выходит ничего
Цитата Сообщение от https://www.cyberforum.ru/announcement.php?a=3
Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены.
За неделю, наверно, хоть какие-нибудь наработки появились? Не обязательно код, но алгоритм решения? Как бы Вы решали эту задачу вручную (точки на листе бумаги)?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38189 / 21124 / 4307
Регистрация: 12.02.2012
Сообщений: 34,730
Записей в блоге: 14
07.12.2015, 21:37
Примерно так:

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
65
66
67
68
69
70
71
72
73
74
75
Private Coord(1 To 2000) As Double
 
Function Area(n1 As Integer, n2 As Integer, n3 As Integer) As Double
         x1# = Coord(2 * (n1 - 1) + 1)
         y1# = Coord(2 * (n1 - 1) + 2)
         x2# = Coord(2 * (n2 - 1) + 1)
         y2# = Coord(2 * (n2 - 1) + 2)
         x3# = Coord(2 * (n3 - 1) + 1)
         y3# = Coord(2 * (n3 - 1) + 2)
         Area = Abs(0.5 * ((x1# - x3#) * (y2# - y3#) - (x2# - x3#) * (y1# - y3#)))
End Function
 
Sub Search(n As Integer)
 
    Min% = n
    p1% = 0
    p2% = 0
    p3% = 0
 
    For i1% = 1 To n - 2
    
        For i2% = i1% + 1 To n - 1
        
            For i3% = i2% + 1 To n
            
                '::: Проверка, образуют ли точки i1,i2,i3 треугольник
                
                A# = Area(i1%, i2, i3)
                
                If A# > 0 Then '::: Да
                
                   in_point% = 0
                   
                   out_point% = 0
                   
                   For j% = 1 To n  '::: Перебираем все остальные точки
                   
                       If (j% <> i1%) And (j% <> i2%) And (j% <> i3%) Then
                   
                          A1# = Area(j%, i2%, i3%)
                          A2# = Area(i1%, j%, i3%)
                          A3# = Area(i1%, i2%, j%)
                   
                          '::: Точка внутри или вовне
                   
                          If A1# + A2# + A3# > A# Then
                             out_point% = out_point% + 1
                          Else
                             in_point% = in_point% + 1
                          End If
                   
                       End If
                
                   Next j%
                   
                   diff% = Abs(in_point% - out_point%)
                   
                   If diff% < Min% Then
                      Min% = diff%
                      p1% = i1%
                      p2% = i2%
                      p3% = i3%
                   End If
                                   
                End If
                        
            Next i3%
            
        Next i2%
        
    Next i1%
 
    Debug.Print p1%; " "; p2%; " "; p3%
    
End Sub
Массив Coord нужно заполнить и вызвать Search. Не проверял работу...
1
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 3
08.12.2015, 17:07  [ТС]
Казанский, В том и дело,что я даже не представляю алгоритма. Есть начало,да :
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Кнопка2_Click() 
Dim a() As Integer, i As Integer, j As Integer, K As Integer, N As Integer
N = InputBox(" введите кол-во элементов ") 
m = 2 * N 
 
ReDim a(m) 
Randomize 
str = " " 
For i = 1 To m 
a(i) = Int(10 * Rnd + 1) + Int(-10 * Rnd + 1) 
str = str & a(i) & " " 
Next 
MsgBox ("Элементы массива : " & str)
Далее я стала искать методы определения положения точек(вне,внутри,либо на стороне треугольника),нашла такую формулу :
"Математическая часть - векторное и псевдоскалярное произведения.
Реализация - считаются произведения (1, 2, 3 - вершины треугольника, 0 - точка):
(x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)
(x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0)
(x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0)"
далее пытаюсь работать с этим ,но он неправильно выдает...
Вы понимаете,если бы были хорошие наброски,я бы скорее уже догнала,если я сюда написала,значит мало в этом смыслю. Преподаватель очень странный,не объясняет как делать,мы просто на занятии переписываем предоставленный им код.Согласитесь,не лучший метод научить студентов работать с программой. А курсовую сдать надо. С другими задачами я разобралась,но так как раньше никогда не работала с бэсиком,для меня это очень трудно.И да,когда уже поняла,что мне не под силу и решила к нему подойти,он только и смог мне сказать "ну что вы,простейшая задача,простейшая,три цикла разности создадите,а потом минимальное число будете искать" и отчалил.Я не учусь на программиста какого-то и вообще в этой области меня не будет.Какие три цикла?О чем он вообще?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38189 / 21124 / 4307
Регистрация: 12.02.2012
Сообщений: 34,730
Записей в блоге: 14
08.12.2015, 19:58
ulyana2608, даже правильные слова сказал преподаватель... Действительно три цикла. См. строки 20, 22, 24 моего кода. А вот задавать координаты случайными не советую (трудно будет проверять). Задай сначала несколько точек, посмотри, что должно получиться, а потом проверь, как это вычислит программа.
0
0 / 0 / 0
Регистрация: 07.12.2015
Сообщений: 3
08.12.2015, 22:13  [ТС]
Catstail, я и со случайными проверяла,это не проблема,вроде. В вашем коде недоработка,я вот смотрю что не так,но все равно спасибо. Преподаватель мне сказал также через минимальное число,не представляю как.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
09.12.2015, 02:52
Может по площади треугольников? Вынести в отдельную функцию
Для треугольника годится следующий тест:
ABC - треугольник, O - точка
Проверяем равенство на площади:
ABC = ABO + BCO + CAO
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38189 / 21124 / 4307
Регистрация: 12.02.2012
Сообщений: 34,730
Записей в блоге: 14
09.12.2015, 09:46
Цитата Сообщение от ulyana2608 Посмотреть сообщение
В вашем коде недоработка
- да неужели? И где?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.12.2015, 09:46
Помогаю со студенческими работами здесь

На плоскости заданы три точки. Вычислите площадь треугольника, вершинами которого являются эти точки.
На плоскости заданы три точки. Вычислите площадь треугольника, вершинами которого являются эти точки. Проверьте, что эти точки лежат не на...

На плоскости заданы три точки. вычислить площадь треугольника , вершинами которого являются эти точки
на плоскости заданы три точки. вычислить площадь треугольника , вершинами которого являются эти точки. проверить , что эти точки лежат не...

Определить найдутся среди точек заданного множества точки являющиеся вершинами правильной пирамиды
У меня такая тема попалась: Определить найдутся среди точек заданного множества точки являющиеся вершинами правильной пирамиды если...

Выбрать три различные точки из заданного множества точек на плоскости так, чтобы была минимальной разность между количествами точек, внутри и снаружи.
Написать программный модуль для решения следующей задачи. Выбрать три различные точки из заданного множества точек на плоскости так,...

Из заданного множества точек на плоскости выбрать три разные точки А В С так, чтобы внутри треугольника АВС содержалось максимальное количество точек.
Помогите написать программный модуль для решения задачи. Из заданного множества точек на плоскости выбрать три разные точки А В С так,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru