Автор Тема: Вычислить значения медиан треугольника, прога, помогите плиз  (Прочитано 3983 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн siyu1989

  • Пользователь
  • **
  • Сообщений: 40
    • Просмотр профиля
Вычислить значения медиан треугольника, сторонами которого являются медианы исходного треугольника со сторонами a, b, c.
Назначение процедуры: Вычисление длины медианы, проведенной к стороне a:
ma=0.5*sqrt(2*b^2+2*c^2-a^2)
код:
Option Strict On
Option Explicit On
Imports System.Math
Public Class Form1
'Функция ввода координаты точки в Textbox
Function vvod(ByVal T As TextBox) As Single
Return CSng(Val(T.Text))
End Function
'Процедура вывода результата в TextBox
Sub vivod(ByVal Z As Single, ByVal T As TextBox)
T.Text = CStr(Z)
End Sub
'Функция вычисления длины отрезка по координатам двух точек
Public Function rasst(ByVal x1 As Single, ByVal y1 As Single, ByVal x2 As Single, ByVal y2 As Single) As Single
  Return CSng(Sqrt((x1 - x2) ^ 2 + (y1 - y2) ^ 2))
End Function
'Процедура Вычисления длины медианы
' Может быть, легче функцией вычислять - код понятнее будет
Sub med(ByVal a As Single, ByVal b As Single, ByVal c As Single, ByRef m As Single)
m = CSng(0.5 * Sqrt(2 * b ^ 2 + 2 * c ^ 2 - a ^ 2))
End Sub
'Процедура обработки события нажатия на кнопку Button1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Single, b As Single, c As Single
Dim ma As Single, mb As Single, mc As Single

'длины треугольника ( 1й, 3й, 5й TextBox - иксы, 2й, 4й, 6й TextBox -
a = rasst(vvod(TextBox1), vvod(TextBox2), vvod(TextBox3), vvod(TextBox4))
b = rasst(vvod(TextBox5), vvod(TextBox6), vvod(TextBox3), vvod(TextBox4))
c = rasst(vvod(TextBox1), vvod(TextBox2), vvod(TextBox5), vvod(TextBox6))

Call med(a, b, c, ma) 'Вычисление медианы для /а/   Может быть, слово Call не надо.
Call med(b, a, c, mb) 'Вычисление медианы для /b/   Может быть, слово Call не надо.
Call med(c, b, a, mc) 'Вычисление медианы для /c/   Может быть, слово Call не надо.

a = ma 'переприсваевание для второго треугльника  сторонами которого являются медианы исходного треугольника (a, b, c)
b = mb
c = mc

'Снова вычисление медиан
Call med(a, b, c, ma) 'Вычисление медианы для /а/   Может быть, слово Call не надо.
Call med(b, a, c, mb) 'Вычисление медианы для /b/   Может быть, слово Call не надо.
Call med(c, b, a, mc) 'Вычисление медианы для /c/   Может быть, слово Call не надо.

'вывод в 3 textBoxa
vivod(ma, TextBox7)
vivod(mb, TextBox8)
vivod(mc, TextBox9)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
End Class

Как это будет выглядеть в конструкторе?
« Последнее редактирование: 18 Января 2012, 20:40:32 от Asix »

Оффлайн siyu1989

  • Пользователь
  • **
  • Сообщений: 40
    • Просмотр профиля
Re: помогите плиз..
« Ответ #1 : 17 Января 2012, 17:34:24 »
Примерно у меня так,но не знаю верно или нет?!
Ввести стороны треугольника а=... b=... с=...
Кнопки:вычислить и выход
ma=... mb=... mc=...
Но в коде есть х,у куда их внести?

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: помогите плиз..
« Ответ #2 : 19 Января 2012, 00:51:58 »
...Но в коде есть х,у куда их внести?
А зачем они? Тут координаты точек не нужны.
Найти медианы - формула есть: ma=0.5*sqrt(2*b^2+2*c^2-a^2), а затем по аналогии медианы медиан: ma'=0.5*sqrt(2*mb^2+2*mc^2-ma^2)
3 текстбокса - исходных данных (a, b, c), копка "Вычислить" и 3 текстбокса выходных данных  - медианы (ma', mb', mc')

Оффлайн sp

  • Пользователь
  • **
  • Сообщений: 51
    • Просмотр профиля
Можно и 6 текстбоксов. Потом, чтобы понять, откуда и куда распаковщик-упаковщик плодить. Нужно два групбокса. Один называется "Исходные данные". Слева он. Другой зовётся "Результаты вычислений". У него в правом верхнем углу батон "Получить". Курсор "ручонка".
В каждом боксе по 6 текстоых. 3 просто так, только для вывода, типа "Длина стороны а". 3 для ввода. Курсор "слэш".
Если гарантия, вводить будем без ошибок, то сразу todouble. Если без гарантий, преобразуем в плавающее с сообщением об ошибке. В бокс пишем "???" или "Err" какой и мессер выводим "Ошибка исходных данных".
Надо это в учебной программе? Лучше сделать лучше, чем абы как.