Графы В Делфи

Тема в разделе "Pascal and Delphi", создана пользователем nic-nic, 1 окт 2012.

  1. nic-nic

    nic-nic Гость

    Помогите преобразовать граф в виде матрицы смежности
     
  2. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    В каком виде исходные данные?
     
  3. nic-nic

    nic-nic Гость

     
  4. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    Какой замечательный ответ - это сарказм!
    Такс... получается граф задан текстом... хм... поставлю вопрос также в каком виде исходные данные? (т.е. как связи вершин графа (который например на картинке) будут представлены в виде текста)
    [​IMG]

    Что понимается под "текстовыми полями" = (TEdit, TRichEdit, TMemo... или что)?
     
  5. nic-nic

    nic-nic Гость

    1 поле TMemo
    2 поле TMemo
    3 поле TEdit
    4 поле TEdit
     
  6. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    Так и как граф представленный на рисунке будет отображен в TMemo?
    Т.е. напишите текстом как это будет... чтобы я хоть понял в каком виде исходные данные
     
  7. nic-nic

    nic-nic Гость

    Вот решение на VB.NET помогите только перевести в Делфи. Буду очень благодарен!
    Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim v, r As Integer

    Dim matr(100, 100) As Integer

    Dim a, b, x As Integer

    'Заполняем матрицу смежности и считаем количество вершин'

    Dim s As String

    For i = 0 To TextBox1.Lines.Count - 1

    s = TextBox1.Lines(i)

    s = s.Trim()

    If s <> "" Then

    x = s.IndexOf(" ")

    a = Val(s.Substring(0, x))

    b = Val(s.Substring(x + 1, s.Length - x - 1))

    matr(a, ^_^ = 1

    matr(b, a) = 1

    If a > v Then v = a

    If b > v Then v = b

    End If

    Next



    r = 0

    For i = 1 To v

    For j = 1 To v

    If matr(i, j) = 1 Then r = r + 1

    Next

    Next

    r = r / 2



    TextBox2.Text = ""

    For i = 1 To v

    For j = 1 To v

    TextBox2.Text += Str(matr(i, j)) + " "

    Next

    TextBox2.Text += vbNewLine

    Next


    TextBox3.Text = Str(v)


    TextBox4.Text = Str&reg;

    End Sub

    End Class
     
Загрузка...

Поделиться этой страницей