Универсальные шаблоны - C# (204918)
Формулировка задачи:
Вот мой класс для представления граф, нужно переделать его с использование дженериков.
Поясните, как это
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Graphs { class graph { // ПОЛЯ ДЛЯ РАБОТЫ С ГРАФОМ!!!!!!! private int numberpoints; private int[] pointsinfo = new int[100];// хранит информацию каждой точки public int[,] matrix = new int[100, 100]; // будет в нулевых строке и столбце хранить номер вершины. // СВОЙСТВА ДЛЯ МАССИВА ИНФЫ О ТОЧКАЪ И РЕБРАХ И ИХ КОЛИЧЕСТВЕЕ!!!!!!!!! public int Numberpoints { get { return numberpoints; } set { numberpoints = value; } } public int this[int i] { get { return pointsinfo[i]; } set { pointsinfo[i] = value; } } // РАБОТА С ВЕРШИНАМИ ГРАФА!!!!!!!!!!!!!!!!!! public void Addpointandinfo(int y) // ввод информации о вершине(числовой!) { ++numberpoints; pointsinfo[numberpoints] = y; } public void Deletepointandinfo(int number) // принимаем ввод номера точки, которую удаляем!! ПОТОМ ДОБАВИТЬ ПРОВЕРКУ АНЛИЧИЯ РЕБРА!!!!!!!!! { --numberpoints; for (int i = number; i < numberpoints + 1; i++) { pointsinfo[i] = pointsinfo[i + 1]; } for (int j = 1; j < numberpoints + 1; j++) { for (int i = 1; i < numberpoints + 1; i++) { if (i >= number) { if (j >= number) matrix[i, j] = matrix[i + 1, j + 1]; else matrix[i, j] = matrix[i + 1, j]; } else { if (j >= number) matrix[i, j] = matrix[i, j + 1]; else matrix[i, j] = matrix[i, j]; } } } } public int Checkpoint(int number) // проверяет, если количество больше, чем я вввожу, то возвращает ноль - те есть такой точки нету!!! { if (number > numberpoints || number <= 0) return 0; else return 1; } // РАБОТА С РЕБРАМИ ГРАФА!!!!!!!!!!!!!!!!! public void Deleteedgeandinfo(int point1, int point2) // выводим матрицу смежности - но номерам удаляем! { matrix[point1, point2] = 0; matrix[point2, point1] = 0; } public void Addedgeandinfo(int point1, int point2, int y) // первая точка, втора точка(через которые прокладывается ребро), информация о ребре { matrix[point1, point2] = y; matrix[point2, point1] = y; } public int CheckedgeDelete(int point1, int point2) /// проверяет есть ли такие точки в матрице!. Если нет, то возвращает 0. Если есть - 1 !!! { if ((point1 > numberpoints) || (point2 > numberpoints) || (point1 < 1) || (point2 < 1)) return 0; if (matrix[point1, point2] == 0 && matrix[point2, point1] == 0) return 0; else return 1; } public int CheckedgeAdd(int point1, int point2) /// проверяет есть ли такие точки в матрице!. Если нет, то возвращает 0. Если есть - 1 !!! { if ((point1 > numberpoints) || (point2 > numberpoints) || (point1 < 1) || (point2 < 1) || (point1 == point2)) return 0; if (matrix[point1, point2] == 0 && matrix[point2, point1] == 0) return 1; else return 0; } // РАБОТА С МАТРИЦЕЙ СМЕЖНОСТИ!!!!!!!!!!!! public void matrixnull() { for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) matrix[i, j] = 0; } for (int i = 0; i < 100; i++) { matrix[i, 0] = i; matrix[0, i] = i; } } public void begin() { Numberpoints = 0; matrixnull(); Addpointandinfo(623); Addpointandinfo(234); Addpointandinfo(456); Addpointandinfo(354); Addpointandinfo(34); Addpointandinfo(905); Addedgeandinfo(1, 2, 8); Addedgeandinfo(1, 4, 7); Addedgeandinfo(2, 3, 6); Addedgeandinfo(3, 4, 5); Addedgeandinfo(6, 4, 4); Addedgeandinfo(5, 6, 3); Addedgeandinfo(3, 6, 2); Addedgeandinfo(5, 1, 1); Addedgeandinfo(5, 4, 9); Addedgeandinfo(5, 3, 4); } } }
Решение задачи: «Универсальные шаблоны»
textual
Листинг программы
public void begin() { Numberpoints = 0; matrixnull(); int[] list1 = new int[] {623, 234, 456, 354, 34, 905}; for (int i =0; i < list1.lenght; i++) Addpointandinfo(list1[i]); int[][] list2 = new int[][] { new int[] {1,2,3}, new int[] {1,4,7}, //... new int[] {5,3,4} } for (int i=0; i<list2.Lenght; i++) Addedgeandinfo(list2[i].[0], list2[i].[1], list2[i].[2]); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д