Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Visual Basic (VB).

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

'=== Создать класс с именем LineClass ===

Код:
 
Public A As Double
Public B As Double
Public C As Double
Public NextItem As LineClass
 

'=== End Class ===
Код в модуле, где процедуре CalcIntersect передаются пути и имена входного и выходного файлов

Код:
 
Private Sub ReadCoefficients(ByVal FileName As String, ByRef toRoot As LineClass)
    Dim fNum As Integer, Item As LineClass
    Dim vA As Double, vB As Double, vC As Double
    'открываем файл на чтение
    fNum = FreeFile()
    Open FileName For Input As #fNum
     
    Do Until EOF(fNum) 'до конца файла читаем параметры прямых в список
        Set Item = New LineClass
        Input #fNum, vA, vB, vC
        Item.A = vA: Item.B = vB: Item.C = vC
        Set Item.NextItem = toRoot
        Set toRoot = Item
    Loop
    Close #fNum
End Sub
 
Public Sub CalcIntersection(ByVal InputFile As String, ByVal OutputFile As String)
    Dim pRoot As LineClass, fOut As Integer
    Dim pCurrentLine As LineClass, pNextLine As LineClass
    Dim vX As Double, vY As Double, vP As Double
    'читаем список параметров прямых
    Call ReadCoefficients(InputFile, pRoot)
    'открываем файл результата на запись
    fOut = FreeFile()
    Open OutputFile For Output As #fOut
    Set pCurrentLine = pRoot 'ссылка на 1-ую прямую списка параметров
     
    'по всему списку параметров прямых
    Do Until pCurrentLine Is Nothing
        'вычисляем точку пересечения текущей прямой со всеми последующими
        Set pNextLine = pCurrentLine.NextItem
        Do Until pNextLine Is Nothing
            vP = pCurrentLine.A * pNextLine.B - pCurrentLine.B * pNextLine.A
            'если прямые не параллельны, то вычислим точку пересечения
            If Math.Abs(vP) > 1E-100 Then
                vX = (pCurrentLine.B * pNextLine.C - pCurrentLine.C * pNextLine.B) / vP
                vY = (pCurrentLine.C * pNextLine.A - pCurrentLine.A * pNextLine.C) / vP
                Write #fOut, vX, vY
            End If
            Set pNextLine = pNextLine.NextItem 'к следующей прямой
        Loop
        'переход к следующей прямой, для которой вычисляем точку пересечения
        Set pCurrentLine = pCurrentLine.NextItem
    Loop
    Close #fOut
End Sub
 


Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 13:36 18-04-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Visual Basic (VB).


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru