Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Построение треугольника из частей отрезка / 13 сообщений из 13, страница 1 из 1
23.06.2011, 21:02
    #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
24.06.2011, 11:58
    #37323343
JeiDee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение треугольника из частей отрезка
Хочу нарисовать оси координат, почему то не рисует. Вот код:
Код: plaintext
1.
2.
3.
Picture1.DrawWidth =  1  ‘ устанавливаем кисть толщиной в  1  пиксель
Picture1.Line (- 4 ,  0 )-( 4 ,  0 )' рисуем оси координат
Picture1.Line ( 0 , - 4 )-( 0 ,  4 )
...
Рейтинг: 0 / 0
24.06.2011, 12:01
    #37323350
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение треугольника из частей отрезка
JeiDee,

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

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

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

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

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

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

вроде бы никак.
просто делай сдвиг при отрисовке
А как сдвиг делать. Если я правильно понял сдвиг имеется ввиду не тупое прибавление 0 + 150 :-)
...
Рейтинг: 0 / 0
24.06.2011, 12:50
    #37323467
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение треугольника из частей отрезка
вот пример, разбирайтесь
...
Рейтинг: 0 / 0
24.06.2011, 13:04
    #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
24.06.2011, 15:07
    #37323770
JeiDee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Построение треугольника из частей отрезка
Врядли разобраться успею... (((
у меня остались считанные часы... всего 1 задача не доделана...
надо просто построить систему координат в центре... даже самым примитивным способом))) по сантиметрам главное
...
Рейтинг: 0 / 0
24.06.2011, 15:12
    #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
25.06.2011, 00:08
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Построение треугольника из частей отрезка / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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