/// <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); } }
/// <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); } }