1 / 1 / 0
Регистрация: 22.10.2012
Сообщений: 65

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

17.05.2014, 19:45. Показов 2403. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
пожалуйста помогите решать проблему

В плоскостье есть 20 точек. (с помощью RND). Определить ими составляемых возможные прямоугольники, нарисовать в PictureBox-е, найти наименьшую площадь имеющий прямоугольник и печать подготовлена в соответствии с пунктами прямоугольных координатах.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2014, 19:45
Ответы с готовыми решениями:

Найти площадь прямоугольника
Изначально было задание:даны 4 стороны, найти являются ли эти стороны прямоугольником. Программный код который я составил: Private...

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

Найти сторону квадрата, площадь которого равна площади прямоугольника
Помогите решить задачу по информатике в программе VBA Линейные алгоритмы. Ввод, вывод информации Задача: Найти сторону квадрата,...

4
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
18.05.2014, 16:10
Лучший ответ Сообщение было отмечено Апострофф как решение

Решение

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
Const Tolerance = 0.01
Const Vertex = 20
 
Private Sub Form_Click()
    Dim i As Long, j As Long, Y As Long, z As Long, pos() As Single, _
        m As Single, p1 As Long, p2 As Long, p3 As Long, p4 As Long, _
        min As Single, f As Boolean
    Randomize: Cls
    ReDim pos(Vertex - 1, 1)
    For i = 0 To Vertex - 1
        pos(i, 0) = Int(Rnd * 10) / 10: pos(i, 1) = Int(Rnd * 10) / 10
        Circle (pos(i, 0), pos(i, 1)), 0.01, vbRed
    Next
    min = 1
    For i = 0 To Vertex - 1: For j = 0 To Vertex - 1: For Y = 0 To Vertex - 1: For z = 0 To Vertex - 1
        If Not (i = j Or i = Y Or i = z Or j = Y Or j = z Or Y = z) Then
            m = Rect(pos(i, 0), pos(i, 1), pos(j, 0), pos(j, 1), pos(Y, 0), pos(Y, 1), pos(z, 0), pos(z, 1))
            If m < min And m > 0 Then
                f = True
                min = m
                p1 = i: p2 = j: p3 = Y: p4 = z
                Line (pos(p1, 0), pos(p1, 1))-(pos(p2, 0), pos(p2, 1))
                Line -(pos(p3, 0), pos(p3, 1))
                Line -(pos(p4, 0), pos(p4, 1))
                Line -(pos(p1, 0), pos(p1, 1))
            End If
        End If
    Next: Next: Next: Next
    
    If Not f Then MsgBox "Íåò ïðÿìîóãîëüíèêîâ": Exit Sub
    DrawWidth = 4
    Line (pos(p1, 0), pos(p1, 1))-(pos(p2, 0), pos(p2, 1)), vbRed
    Line -(pos(p3, 0), pos(p3, 1)), vbRed
    Line -(pos(p4, 0), pos(p4, 1)), vbRed
    Line -(pos(p1, 0), pos(p1, 1)), vbRed
    DrawWidth = 1
    MsgBox "s=" & Format(min, "#0.000")
    
    Refresh
End Sub
 
Private Function Rect(ByVal x1 As Single, ByVal y1 As Single, _
                        ByVal x2 As Single, ByVal y2 As Single, _
                        ByVal x3 As Single, ByVal y3 As Single, _
                        ByVal x4 As Single, ByVal y4 As Single) As Single
    Dim l1 As Single, l2 As Single
    Dim px4 As Single, dy4 As Single
    
    dx4 = x3 + x1 - x2
    dy4 = y3 + y1 - y2
    
    If Abs(dx4 - x4) > Tolerance Or Abs(dy4 - y4) > Tolerance Then Exit Function
    
    If (x1 = x2 And y1 = y2) Or (x3 = x2 And y3 = y2) Then Exit Function
    
    x1 = x1 - x2: y1 = y1 - y2: x3 = x3 - x2: y3 = y3 - y2
    l1 = Sqr(x1 * x1 + y1 * y1): x1 = x1 / l1: y1 = y1 / l1
    l2 = Sqr(x3 * x3 + y3 * y3): x3 = x3 / l2: y3 = y3 / l2
    If Abs(x1 * x3 + y1 * y3) < Tolerance Then ' äîïóñê
        Rect = l1 * l2
    End If
End Function
 
Private Sub Form_Load()
    Height = (Height - ScaleHeight) + 5000
    Width = (Width - ScaleWidth) + 5000
    AutoRedraw = True: Scale (0, 0)-(1, 1)
End Sub
Миниатюры
Найти наименьшую площадь прямоугольника, образованного случайными точками  
5
1 / 1 / 0
Регистрация: 22.10.2012
Сообщений: 65
18.05.2014, 18:58  [ТС]
огромное спасибо а каким алгоритмом вы решили эту задачу? у меня в голове не было ни каких алгоритмов пожалуйста если не трудно скажите алгоритм.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
18.05.2014, 19:47
Цитата Сообщение от Элина Галстян Посмотреть сообщение
огромное спасибо а каким алгоритмом вы решили эту задачу?
В "лоб". Перебор всех точек и проверка являются ли они вершинами прямоугольника, через скалярное произведение смежных сторон. Если являются, то вычисление площади по известным сторонам. Далее стандартный поиск минимума.
2
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
19.05.2014, 13:19
Можно чуть облегчить жизнь железяке, избавившись от корней, заменив 56-61 строки кода на такое
Visual Basic
1
2
3
    If Abs((y2 - y3) * (y2 - y1) - (x3 - x2) * (x2 - x1)) < Tolerance * Tolerance Then ' допуск
        Rect = Abs((x1 - x3) * (y2 - y3) - (x2 - x3) * (y1 - y3)) 'l1 * l2
    End If
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2014, 13:19
Помогаю со студенческими работами здесь

Если окружность пересекает ось ОХ, найти площадь треугольника, образованного точками пересечения и её центром
Если окружность пересекает ось ОХ, найти площадь треугольника, образованного точками пересечения и её центром!!!

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

Известны координаты вершин прямоугольника ABCD , A(x1,y1), B(x2,y2), C(x3,y3). Найти площадь и периметр прямоугольника.
как решить эту задачу с помощью delphi? Известны координаты вершин прямоугольника ABCD , A(x1,y1), B(x2,y2), C(x3,y3). Найти площадь и...

Известны вершины прямоугольника. Найти площадь и периметр прямоугольника
Известны координаты вершин прямоугольника ABCD , A(x1,y1), B(x2,y2), C(x3,y3). Найти площадь и периметр прямоугольника.

Найти площадь параллелограмма, образованного векторами
Здравствуйте. Помогите с заданиями a=3m+2n b=-4m-2n модуль m= 2 модуль n= 5 угол между m и n 3pi/4 скалярное произведение...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru