AndVGri
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору В задании не сказано, где хранятся координаты точек полигона, поэтому считаем, что считываются из файла '=== Создать класс с именем PointClass === Код: Public X As Double Public Y As Double Public NextItem As PointClass | '=== End Class === 'Код в модуле вызывается процедура CalcRadius с параметром путь и имя файла с координатами точек полигона Код: Private Sub ReadPoints(ByVal FileName As String, ByRef toRoot As PointClass) Dim vX As Double, vY As Double, Item As PointClass Dim fNum As Integer fNum = FreeFile() Open FileName For Input As #fNum Do Until EOF(fNum) Set Item = New PointClass Input #fNum, vX, vY Item.X = vX: Item.Y = vY Set Item.NextItem = toRoot Set toRoot = Item Loop End Sub Private Sub CalcRadius(ByVal InputFile As String) Dim pRoot As PointClass, vMax As Double, Dist As Double Dim pCurrentPoint As PointClass, pNextPoint As PointClass Call ReadPoints(InputFile, pRoot) Set pCurrentPoint = pRoot Do Until pCurrentPoint Is Nothing Set pNextPoint = pCurrentPoint.NextItem Do Until pNextPoint Is Nothing Dist = Math.Sqr((pNextPoint.X - pCurrentPoint.X) ^ 2 + (pCurrentPoint.Y - pNextPoint.Y) ^ 2) If vMax < Dist Then vMax = Dist Set pNextPoint = pNextPoint.NextItem Loop Set pCurrentPoint = pCurrentPoint.NextItem Loop MsgBox "Радиус описанной окружности: " & CStr(0.5 * vMax), vbInformation, "Ответ" End Sub | |