powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Построение треугольника из частей отрезка
13 сообщений из 13, страница 1 из 1
Построение треугольника из частей отрезка
    #37322654
JeiDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите народ с задачей, последняя осталась
Всего 1 день, я думаю такое не осилю за это время.
Вот задачп:
Отрезок длиной 100 сантиметров делится на две части в случайно выбранной точке. Затем бóльшая из оставшихся частей точно так же де-лится ещё на две части.
Рассчитать длины всех трёх частей.
Проверить, можно ли из полученных частей сложить треугольник (суммы длин всех возможных сочетаний двух любых сторон должны быть больше длины третьей стороны), вывести на форму результат проверки.
Если треугольник можно сложить, то построить изображение тре-угольника (использовать объект PictureBox). Самую длинную сторону треугольника отложить по оси Х от начала координат. Затем рассчитать координаты вершины С по формулам (рис. 1):
cos(β) = (a2 + c2 — b2)/(2 * a * c)) — теорема косинусов;
Xc = a * cos(β);
Yc = a * sin(β) = a * (12 - cos2(β))1/2.

Рис. 1
После этого полученные координаты вершин соединить линиями с помощью графического метода .Line.
Вопросы к заданию
1. Разработать интерфейс пользователя. В отчёте привести список объек-тов интерфейса и их назначение.
2. Привести в отчёте программный код расчёта длин всех частей отрезка с комментариями каждого оператора.
3. Привести в отчёте алгоритм определения самой длинной стороны.
4. В отчёте описать набор используемых в программе переменных и обосновать их тип.
5. Добавить в программу расчет значений всех углов (в градусах) и пло-щади треугольника. В отчёте привести алгоритм расчёта всех углов треугольника.

Спасибо всем кто хочет помочь
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323343
JeiDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу нарисовать оси координат, почему то не рисует. Вот код:
Код: plaintext
1.
2.
3.
Picture1.DrawWidth =  1  ‘ устанавливаем кисть толщиной в  1  пиксель
Picture1.Line (- 4 ,  0 )-( 4 ,  0 )' рисуем оси координат
Picture1.Line ( 0 , - 4 )-( 0 ,  4 )
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323350
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeiDee,

рисует-рисует

просто очень-очень короткие оси.... меньше пиксела
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323377
JeiDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProJeiDee,

рисует-рисует

просто очень-очень короткие оси.... меньше пиксела
А как задать в сантиметрах)))
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323404
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Picture1.ScaleMode
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323411
JeiDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Как еще сделать что бы точка 0 0 была не сверху слева а в центре рисунка
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323440
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeiDee,

вроде бы никак.
просто делай сдвиг при отрисовке
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323451
JeiDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProJeiDee,

вроде бы никак.
просто делай сдвиг при отрисовке
А как сдвиг делать. Если я правильно понял сдвиг имеется ввиду не тупое прибавление 0 + 150 :-)
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323467
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот пример, разбирайтесь
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323505
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если лень качать вложение, то вот исходник формы:



Код: plaintext
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.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
VERSION  5 . 00 
Object = "{0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}#1.0#0"; "msscript.ocx"
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =    6915 
   ClientLeft      =    60 
   ClientTop       =    345 
   ClientWidth     =    10335 
   LinkTopic       =   "Form1"
   ScaleHeight     =    6915 
   ScaleWidth      =    10335 
   StartUpPosition =    3   'Windows Default
   Begin VB.TextBox Text2 
      Appearance      =    0   'Flat
      Height          =    330 
      Left            =    7020 
      TabIndex        =    5 
      Text            =   "20"
      Top             =    45 
      Width           =    1140 
   End
   Begin VB.PictureBox Picture1 
      BackColor       =   &H8000000E&
      Height          =    6405 
      Left            =    0 
      ScaleHeight     =    6345 
      ScaleWidth      =    10260 
      TabIndex        =    2 
      Top             =    495 
      Width           =    10320 
   End
   Begin VB.CommandButton Command1 
      Caption         =   "Plot"
      Height          =    375 
      Left            =    4455 
      TabIndex        =    1 
      Top             =    45 
      Width           =    1635 
   End
   Begin VB.TextBox Text1 
      Appearance      =    0   'Flat
      Height          =    330 
      Left            =    675 
      TabIndex        =    0 
      Text            =   "x^3-x/17+8"
      Top             =    45 
      Width           =    3705 
   End
   Begin MSScriptControlCtl.ScriptControl ScriptControl1 
      Left            =    135 
      Top             =    2565 
      _ExtentX        =    1005 
      _ExtentY        =    1005 
   End
   Begin VB.Label Label2 
      BackStyle       =    0   'Transparent
      Caption         =   "Качество:"
      Height          =    330 
      Left            =    6165 
      TabIndex        =    4 
      Top             =    90 
      Width           =    960 
   End
   Begin VB.Label Label1 
      Alignment       =    1   'Right Justify
      BackStyle       =    0   'Transparent
      Caption         =   "Y="
      BeginProperty Font 
         Name            =   "MS Sans Serif"
         Size            =    9 . 75 
         Charset         =    204 
         Weight          =    700 
         Underline       =    0    'False
         Italic          =    0    'False
         Strikethrough   =    0    'False
      EndProperty
      Height          =    240 
      Left            =    135 
      TabIndex        =    3 
      Top             =    90 
      Width           =    465 
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
' Inputs:To plot a graph with this code, you'll need to input the graph equation
'     of te Y-X type. eg. X-5, X^2+3*X, etc. VB functions such as Exp(X) are also supported
'
' Returns:The main function returns values of Y relative to X from the equation.
'     This is then converted to co-ordinates and plotted using the LINE statement
'
'Side Effects:
'      Making the SpeedMark variable higher increases plotting quality but reduces plotting speed.
'      Setting it too high can make the program look as if it has hung. Set it between 20-150!
'      SpeedMark=(20-150)
'**************************************
Dim XMax As Single, YMax As Single, YMin As Single, XMin As Single, XScale As Single, YScale As Single
'

Public Sub DrawGraph _
    (GraphPaper As PictureBox, _
    ByVal GraphEquation As String, _
    ScriptCtrl As ScriptControl, _
    Optional ByVal SpeedMark As Integer =  20 , _
    Optional ByVal GraphColor As Long = vbRed)

Dim X As Single
Dim Y As Single
Dim X1 As Single
Dim Y1 As Single
Dim X2 As Single
Dim Y2 As Single
Dim TempX As Single
Dim TempY As Single
Dim s As String
Dim iColor As Long

On Error GoTo Err_debug

    Screen.MousePointer =  11 

    'Use these to change the size and scale of graph
    XScale =  10  'Scale in pixels per unit
    YScale =  1 
    XMin = - 200  'Minimum values
    YMin = - 100 
    XMax =  200  'Maximum value
    YMax =  100 
    
    'These next lines fit the graph to the graph
    'area and lets you manually change the picture
    'box size without affecting the plotting
    With GraphPaper
        .ScaleHeight = YMax
        .ScaleWidth = XMax
        YMax = YMax + YMin /  2 
        XMax = XMax + XMin /  2 
    End With
    GraphPaper.Cls 'Clear all previous graphs
    
    'This part draws the two axes
    GraphPaper.Line ( 0 , ConvertToYUnits( 0 ))-(XMax - XMin, ConvertToYUnits( 0 ))    'X-axis
    GraphPaper.Line (XMax, YMax - YMin)-(XMax,  0 ) 'Y-axis
    
    'This part is for plotting the graph
    For X = -SpeedMark To SpeedMark Step  1  / SpeedMark

        s = X
        s = VBA.Replace(s, ",", ".")
        s = "X = " & s
        With ScriptCtrl 'This part evaluates the y-values of the equation that will be used in plotting
            .ExecuteStatement (s)
            Y = .Eval(GraphEquation)
        End With
        
        'This is the main part which draws the entire graphs step-by-step by joining tiny lines together, based on the values from the equation
        On Error Resume Next
        If X <> -SpeedMark Then 'Error handling
            X1 = ConvertToXUnits(X)
            X2 = ConvertToXUnits(TempX)
            Y1 = ConvertToYUnits(Y)
            Y2 = ConvertToYUnits(TempY)
            GraphPaper.Line (X1, Y1)-(X2, Y2), GraphColor 'Make plotted line red
        End If
        On Error GoTo  0 
        'These two TempX, TempY are used to set
        '     the next point for the line to continue
        'i.e. Line goes from 0,0 to 1,1. Then it
        '     goes from 1,1 to 2,2 etc
        TempX = X
        TempY = Y
    Next
    

lb_out:
    Screen.MousePointer =  0 
    Exit Sub

Err_debug:
    MsgBox Err.Number & ": " & Err.Description, vbCritical
    Resume lb_out
    
End Sub

'These two functions convert equation values to values that can be plotted correctly on the picture control
Private Function ConvertToXUnits(ByVal ValueToChange As Single) As Single
    ConvertToXUnits = XMax + (ValueToChange * XScale)
End Function

Private Function ConvertToYUnits(ByVal ValueToChange As Single) As Single
    ConvertToYUnits = YMax - (ValueToChange * YScale)
End Function

Private Sub Command1_Click()
Dim i As Long

    i = CLng( 0  & Me.Text2.Text)
    If i <  20  Or i >  150  Then
        i =  20 
    End If
    Me.DrawGraph Me.Picture1, Me.Text1.Text, Me.ScriptControl1, i
    
End Sub

Private Sub Form_Resize()
On Error Resume Next
    If Me.WindowState = vbMinimized Then Exit Sub
    If Me.Height <  1500  Then Me.Height =  1500 
    Me.Picture1.Move  0 , Me.Picture1.Top, Me.ScaleWidth, Me.ScaleHeight
End Sub
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323770
JeiDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Врядли разобраться успею... (((
у меня остались считанные часы... всего 1 задача не доделана...
надо просто построить систему координат в центре... даже самым примитивным способом))) по сантиметрам главное
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37323793
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    'Use these to change the size and scale of graph
    XScale =  10  'Scale in pixels per unit
    YScale =  1 
    XMin = - 200  'Minimum values
    YMin = - 100 
    XMax =  200  'Maximum value
    YMax =  100 
    
    'These next lines fit the graph to the graph
    'area and lets you manually change the picture
    'box size without affecting the plotting
    With GraphPaper
        .ScaleHeight = YMax
        .ScaleWidth = XMax
        YMax = YMax + YMin /  2 
        XMax = XMax + XMin /  2 
    End With
    GraphPaper.Cls 'Clear all previous graphs
    
    'This part draws the two axes
    GraphPaper.Line ( 0 , ConvertToYUnits( 0 ))-(XMax - XMin, ConvertToYUnits( 0 ))    'X-axis
    GraphPaper.Line (XMax, YMax - YMin)-(XMax,  0 ) 'Y-axis


за час думаю сможете осилить
...
Рейтинг: 0 / 0
Построение треугольника из частей отрезка
    #37324467
JeiDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    'Use these to change the size and scale of graph
    XScale =  10  'Scale in pixels per unit
    YScale =  1 
    XMin = - 200  'Minimum values
    YMin = - 100 
    XMax =  200  'Maximum value
    YMax =  100 
    
    'These next lines fit the graph to the graph
    'area and lets you manually change the picture
    'box size without affecting the plotting
    With GraphPaper
        .ScaleHeight = YMax
        .ScaleWidth = XMax
        YMax = YMax + YMin /  2 
        XMax = XMax + XMin /  2 
    End With
    GraphPaper.Cls 'Clear all previous graphs
    
    'This part draws the two axes
    GraphPaper.Line ( 0 , ConvertToYUnits( 0 ))-(XMax - XMin, ConvertToYUnits( 0 ))    'X-axis
    GraphPaper.Line (XMax, YMax - YMin)-(XMax,  0 ) 'Y-axis


за час думаю сможете осилить

Спасибо, помогло. чуть позже выложу результат))
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Построение треугольника из частей отрезка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]