コード例 #1
0
        /// <summary>
        /// Thêm đỉnh
        /// </summary>
        /// <param name="isHaveLocation">Có biết vị trí đỉnh cần thêm chưa?</param>
        public void RunAddVertex(bool isHaveLocation)
        {
            try
            {
                if (Vertices.Count == 0)
                {
                    bool Checker;
                    do
                    {
                        Checker = true;
                        int aNumber = InputNumber("Bạn cần tạo loại đồ thị gì?\n\t1. Có hướng\n\t2. Vô hướng", "Loại đồ thị", false);
                        if (aNumber == 1)
                            IsDirected = true;
                        else if (aNumber == 2)
                            IsDirected = false;
                        else
                        {
                            MessageBox.Show("Nhập số tương ứng để chọn câu trả lời! Đề nghị nhập lại một trong 2 số 1 và 2.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            Checker = false;
                        }
                    } while (!Checker);

                }
                int NewVertexValue = InputVertex("Nhập giá trị của đỉnh:", "Thêm đỉnh mới [1/3]", true);
                Vertex _Vtemp;
                if (isHaveLocation)
                {
                    _Vtemp = new Vertex(MenuLocation, NewVertexValue);
                }
                else
                {
                    _Vtemp = new Vertex(NewVertexValue);
                    _Vtemp.UseDefaultRectangle(Vertices.Count, ControlerForm.ClientSize.Width, ControlerForm.ClientSize.Height);
                }
                bool aChecker;
                int NumberOfVertexConnected;
                do
                {
                    aChecker = true;
                    NumberOfVertexConnected = InputNumber("Nhập số lượng đỉnh có kết nối với đỉnh này:", "Thêm đỉnh mới [2/3]", false);
                    if (NumberOfVertexConnected > Vertices.Count)
                    {
                        MessageBox.Show("Đồ thị hiện tại có " + Vertices.Count + " đỉnh. Đề nghị nhập lại!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        aChecker = false;
                    }

                } while (!aChecker);
                for (int i = 0; i < NumberOfVertexConnected; i++)
                {
                    int ConnectedVertexValue = InputVertex("Cạnh thứ " + (i + 1).ToString() + " nối từ đỉnh " + NewVertexValue + " tới đỉnh: ", "Thêm đỉnh mới [2." + (i + 1).ToString() + "a/2]", false);
                    Vertex ConnectedVertex = GetVertex(ConnectedVertexValue);
                    int EdgeWeight = InputNumber("Cạnh vừa tạo có giá trị: ", "Thêm đỉnh mới [2." + (i + 1).ToString() + "b/2]", true);
                    if (IsDirected)
                    {
                        bool Checker;
                        do
                        {
                            Checker = true;
                            int aNumber = InputNumber("Chọn hướng của cạnh vừa tạo?\n\t1. Có hướng từ đỉnh " + _Vtemp.Value + " tới đỉnh " + ConnectedVertex.Value + "\n\t2. Có hướng từ đỉnh " + ConnectedVertex.Value + " tới đỉnh " + _Vtemp.Value, "Thêm đỉnh mới [2." + (i + 1).ToString() + "c/2]", false);
                            if (aNumber == 1)
                                AddConection(_Vtemp, ConnectedVertex, EdgeWeight);
                            else if (aNumber == 2)
                                AddConection(ConnectedVertex ,_Vtemp, EdgeWeight);
                            else
                            {
                                MessageBox.Show("Nhập số tương ứng để chọn câu trả lời! Đề nghị nhập lại một trong 2 số 1 và 2.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                Checker = false;
                            }
                        } while (!Checker);
                    }
                    else
                        AddConection(_Vtemp, ConnectedVertex, EdgeWeight);
                }
                Vertices.Add(_Vtemp);
                ControlerForm.Invalidate();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message + " Sẽ không có đỉnh nào được thêm vào", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
コード例 #2
0
 /// <summary>
 /// Thêm đỉnh
 /// </summary>
 public void AddVertex()
 {
     try
     {
         int NewVertexValue = InputVertex("Nhập giá trị của đỉnh:", "Thêm đỉnh mới [1/3]", true);
         Vertex _Vtemp = new Vertex(NewVertexValue);
         int NumberOfVertexConnected = InputNumber("Nhập số lượng đỉnh có kết nối với đỉnh này:", "Thêm đỉnh mới [2/3]", false);
         for (int i = 0; i < NumberOfVertexConnected; i++)
         {
             int ConnectedVertexValue = InputVertex("Cạnh thứ " + (i + 1).ToString() + " nối từ đỉnh " + NewVertexValue + " tới đỉnh: ", "Thêm đỉnh mới [2." + (i + 1).ToString() + "a/2]", false);
             Vertex ConnectedVertex = GetVertex(ConnectedVertexValue);
             int EdgeWeight = InputNumber("Cạnh vừa tạo có giá trị: ", "Thêm đỉnh mới [2." + (i + 1).ToString() + "b/2]", true);
             AddConection(ConnectedVertex, _Vtemp, EdgeWeight);
         }
         _Vtemp.UseDefaultRectangle(Vertices.Count, ControlerForm.ClientSize.Width, ControlerForm.ClientSize.Height);
         Vertices.Add(_Vtemp);
         ControlerForm.Invalidate();
     }
     catch (System.Exception ex)
     {
         MessageBox.Show(ex.Message + " Sẽ không có đỉnh nào được thêm vào", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
 }